Systems and Methods for Accessing Applications in Grouped Search Results

ABSTRACT

A user device includes a computing device. The computing device transmits a search query from the user device and receives a first grouped set of search results based on the search query. The first grouped set corresponds to a first application. The first grouped set includes a header and at least two search results. The header includes a first access mechanism corresponding to a first state of the first application. Each of the search results (i) corresponds to a respective second state of the first application responsive to the search query and (ii) includes a respective second access mechanism corresponding to the respective second state. A display displays (i) the first grouped set of search results and (ii) a header link corresponding to the header. In response to the header link being selected, the computing device accesses the first state of the application using the first access mechanism.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 14/521,526 filed Oct. 23, 2014. The entire disclosure of theapplication referenced above is incorporated by reference.

FIELD

This disclosure relates to searching, accessing, and displayingfunctionality of applications.

BACKGROUND

In recent years, use of computers, smartphones, and otherInternet-connected devices has grown exponentially. Correspondingly, thenumber of available software applications for such devices has alsogrown. Today, many diverse native and web software applications can beaccessed on any number of different devices, including, but not limitedto, smartphones, personal computers, automobiles, and televisions. Thesediverse applications can range from business driven applications, games,educational applications, news applications, shopping applications,messaging applications, media streaming applications, social networkingapplications, and so much more. Furthermore, application developersdevelop vast amounts of applications within each genre and eachapplication may have numerous editions.

SUMMARY

One aspect of the disclosure provides a method of performing a search.The method includes receiving, at a computing device (e.g., of a userdevice), search results transmitted from a search system incommunication with the computing device. The search results include aheader for an application executable on the computing device andapplication access mechanisms associated with the header. Eachapplication access mechanism has a reference to the application andindicates one or more performable operations for the application. Themethod further includes displaying, on a display in communication withthe computing device, a graphical user interface including the header,an expansion element associated with the header, and user selectableaccess links grouped with the header. Each access link is associatedwith an application access mechanism for the application. The expansionelement has a collapsed state and an expanded state. When the expansionelement is in the expanded state, the method includes displaying on thedisplay all of the user selectable access links grouped with the header.However, when the expansion element is in the expanded state, the methodincludes displaying on the display a threshold number of the userselectable access links grouped with the header, the threshold numberbeing less than a total number of the user selectable access linksgrouped with the header. The threshold number may be greater than zero.In some examples, a user device includes a display, a computing devicein communication with the display, and non-transitory memory incommunication with the computing device. The non-transitory memorystores instructions that when executed on the computing device cause thecomputing device to perform operations that include the method describeabove.

Implementations of the disclosure may include one or more of thefollowing optional features. In some implementations, the search resultsinclude an advertisement associated with a header. The GUI displays theadvertisement in the header or associated with a user selectable accesslink grouped with the header. In other implementations, the searchresults include an advertisement record including one or more of anadvertisement name, an advertisement identification, a sponsored linkname, a sponsored link identification, advertising content, oradvertisement parameters. In some examples, the method includesdisplaying in the GUI the expansion element in the header.

In some examples, the method includes displaying in the GUI theexpansion element among the user selectable access links grouped withthe header. In response to receiving a user selection of the expansionelement indicating the expanded state, the method may include displayingon the display a list of all of the user selectable access links groupedwith the header and displaying on the display the expansion element as alast element in the list. Additionally or alternatively, in response toreceiving a user selection of the expansion element indicating thecollapsed state, the method may include displaying on the display a listof all of the threshold number of the user selectable access linksgrouped with the header; and displaying on the display the expansionelement as a last element in the list.

In some implementations, the header includes a name of the associatedapplication. The method may include displaying in the graphical userinterface a header link in the header indicating an installation stateof the associated application as being installed or uninstalled.Moreover, in response to receiving a user selection of the header link,when the installation state of the associated application is installed,the method may include executing the application on the computingdevice; and when the installation state of the associated application isuninstalled, the method may include downloading the application tonon-transitory memory in communication with the computing device andexecuting the application on the computing device. In some examples, themethod includes directing the user device to a digital distributionplatform to download the application. Once in communication with thedigital distribution platform, the user may choose to install theapplication on the user device.

In some implementations, the method includes displaying in the graphicaluser interface an ungrouped access link having an associated applicationaccess mechanism for an application different from the applicationassociated with the header. The method may include displaying in thegraphical user interface an indicator in the ungrouped access linkindicating an installation state of the associated application as beinginstalled or uninstalled. Moreover, in response to receiving a userselection of an ungrouped access link, when the installation state ofthe associated application is installed, the method may includeexecuting the application on the computing device; and when theinstallation state of the associated application is uninstalled, themethod may include downloading the application to non-transitory memoryin communication with the computing device and executing the applicationon the computing device. In some implementations, when the installationstate of the associated application is uninstalled, the method includesdirecting the user device to a digital distribution platform, where theuser may choose to install the application on the user device. In someexamples, in response to receiving a user selection of an ungroupedaccess link, when the installation state of the associated applicationis uninstalled, the method includes executing a web browser on thecomputing device and accessing functionality of the associatedapplication through the web browser.

The method may include displaying the access links in an order under theheader based on a score associated with the application access mechanismof each access link. In some examples, the method includes receiving, atthe computing device, search criteria (i.e., search query) through thegraphical user interface, generating, at the computing device, a querywrapper including the search criteria, and transmitting the querywrapper from the computing device to the search system.

Another aspect of the disclosure provides a method of performing asearch. The method includes receiving at a computing device, a searchcriteria from a user device in communication with the computing deviceand executing, using the computing device, a search of a data store incommunication with the computing device using the search criteria. Themethod includes receiving, at the computing device, function recordsfrom the data store in response to the executed search. Each of thefunction records includes an application identifier, an applicationaccess mechanism, and application state information. The applicationaccess mechanism has a reference to a native application and indicatesone or more performable operations for the native application. Theapplication state information describes a state of the nativeapplication when the native application performs the one or moreoperations indicated in the application access mechanism. The methodincludes grouping the function records, at the computing device, basedon the application identifiers, and transmitting header search resultsfrom the computing device to the user device for display on the userdevice. The header search results include a header for each group offunction records and an expansion element associated with each header.

In some implementations, the method also includes receiving, at thecomputing device, an expansion command from the user device. Theexpansion command indicative of a user selection of an expansionelement. The method also includes transmitting access mechanism searchresults from the computing device to the user device. The accessmechanism search results include the application access mechanisms ofthe group of function records is associated with the header of theselected expansion element. The access mechanism search results includelink data for each application access mechanism. The link data includesat least one of text or an image associated with the state of theapplication referenced by the corresponding application accessmechanism.

In some examples, the method further includes filtering the functionrecords, at the computing device, based on their application identifiersby limiting a number of function records per application identifier.Additionally, the method includes scoring the function records based ona relevancy of the function record to the search criteria, and orderingthe function records based on their scores. The scoring is based on theapplication state information of the function record. In some examples,executing the search includes identifying function records of the datastore based on matches between terms of the search criteria and terms ofthe application state information of the function records.

In some example, at least one of the application access mechanismsincludes an application resource identifier referencing a nativeapplication, wherein the application resource identifier is in anapplication-specific format specific for the referenced nativeapplication and indicates one or more performable operations for theuser device. The application resource identifier includes a domain nameand a path to be used by the referenced native application to retrieveand display information. The application access mechanism includesinstructions for at least one of a search application, an operatingsystem, or the referenced native application when executed on userdevice. In some implementations, at least one of the application accessmechanisms includes a web address that when executed by the user devicecauses the user device to execute a web browser and access a web versionof the native application referenced in the application accessmechanism.

The details of one or more implementations of the disclosure are setforth in the accompanying drawings and the description below. Otheraspects, features, and advantages will be apparent from the descriptionand drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a schematic view of an example environment including a userdevice in communication with a search system.

FIG. 1B is a functional block diagram of a search system interactingwith user devices and data sources.

FIG. 2 is a schematic view of an example user device in communicationwith a search system.

FIGS. 3A and 3B are schematic views of example function records.

FIG. 4A is a schematic view of an example search module receiving andprocessing a query wrapper and outputting search results.

FIG. 4B is a schematic view of an example set generation modulegenerating a consideration set and a set processing module scoring,filtering, and grouping function records of the consideration set.

FIG. 4C is a schematic view of an example set generation modulegenerating a consideration set and a set processing module scoring,filtering, and grouping function records of the consideration set.

FIG. 4D is a schematic view of an example advertisement module.

FIGS. 5A-5C is a schematic view of an example arrangement of operationsfor a method of performing a search on a user device.

FIG. 6A is a schematic view of an example arrangement of operations fora method of performing a search on a search system.

FIGS. 6B and 6C are schematic view of an example arrangement ofoperations for a method of generating search results.

FIGS. 7A-7D are flow diagrams illustrating example methods of operatinga user device.

FIGS. 8A and 8B are schematic views of an example user device displayinga graphical user interface that receives a search query and displayssearch results.

FIG. 8C is a schematic view of an example user device displaying agraphical user interface displaying search results grouped under a bareheader (i.e., a header without links).

FIG. 8D is a schematic view of an example user device displaying agraphical user interface displaying search results grouped under aheader having a header link.

FIG. 8E is a schematic view of an example user device displaying agraphical user interface displaying search results with indicatorsindicating an installation state of a corresponding application.

FIGS. 8F-8I are schematic views of example user device displaying agraphical user interface displaying an expanded state and a collapsedstate of search results.

FIGS. 8J and 8K are schematic views of example user device showinginformation relating to a link of the search results.

FIG. 9 is a schematic view of an example computing device executing anysystems or methods described herein.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

A search system of the present disclosure implements a search based on aquery received from a user device. The search system receives a queryfrom a user device that includes search criteria, generates searchresults in response to the received query, and transmits the searchresults to the user device. The search results may include variousmechanisms for accessing applications or functionality of applicationsrelevant to the search query of the user. In response to selection of anaccess mechanism, the user device may launch an application referencedin the application access mechanism and perform the one or moreoperations indicated in the application access mechanism.

FIG. 1A illustrates an example system 100 that includes a user device200 associated with a user 10 in communication with a remote system 110via a network 120. FIG. 1B provides a functional block diagram of thesystem 100. The remote system 110 may be a distributed system (e.g.,cloud environment) having scalable/elastic computing resources 112and/or storage resources 114. The user device 200 and/or the remotesystem 110 may execute a search system 300 and optionally receive datafrom one or more data sources 130. In some implementations, the searchsystem 300 communicates with one or more user devices 200 and the datasource(s) 130 via the network 120. The network 120 may include varioustypes of networks, such as a local area network (LAN), wide area network(WAN), and/or the Internet.

FIG. 2 shows an example user device 200 in communication with the searchsystem 300. User devices 200 can be any computing devices that arecapable of providing queries 210, 212 to the search system 300. Userdevices 200 include, but are not limited to, mobile computing devices,such as laptops 200 a, tablets 200 b, smart phones 200 c, and wearablecomputing devices 200 d (e.g., headsets and/or watches). User devices200 may also include other computing devices having other form factors,such as computing devices included in desktop computers 200 e, vehicles,gaming devices, televisions, or other appliances (e.g., networked homeautomation devices and home appliances).

The user devices 200 may use a variety of different operating systems224. In examples where a user device 200 is a mobile device, the userdevice 200 may run an operating system including, but not limited to,ANDROID® developed by Google Inc., IOS® developed by Apple Inc., orWINDOWS PHONE® developed by Microsoft Corporation. Accordingly, theoperating system 224 running on the user device 200 may include, but isnot limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®. In an examplewhere a user device is a laptop or desktop computing device, the userdevice may run an operating system including, but not limited to,MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., orLinux. User devices 200 may also access the search system 300 whilerunning operating systems 224 other than those operating systems 224described above, whether presently available or developed in the future.

A software application 204 may refer to computer software that, whenexecuted by a computing device, causes the computing device to perform atask. In some examples, a software application 204 may be referred to asan “application”, an “app”, or a “program”. Example softwareapplications 204 include, but are not limited to, word processingapplications, spreadsheet applications, messaging applications, mediastreaming applications, social networking applications, and games.

Applications 204 can be executed on a variety of different user devices200. In some examples, a native application 204 a may be installed on auser device 200 prior to a user 10 purchasing the user device 200. Inother examples, the user may 10 download and install native applications204 a on the user device 200.

The functionality of an application 204 may be accessed on the computingdevice 200 on which the application 204 is installed. Additionally oralternatively, the functionality of an application 204 may be accessedvia a remote computing device 112. In some examples, all of anapplication's functionality is included on the computing device 112, 200on which the application 204 is installed. These applications 204 mayfunction without communication with other computing devices 112, 200(e.g., via the Internet). In other examples, an application 204installed on a computing device 200 may access information from otherremote computing devices 112 during operation. For example, a weatherapplication installed on a computing device 200 may access the latestweather information via the Internet and display the accessed weatherinformation to the user 10 through the installed weather application. Instill other examples, a web-based application 204 b (also referred toherein as a web application) may be partially executed by the user'scomputing device 200 and partially executed by a remote computing device112. For example, a web application 204 b may be an application 204 thatis executed, at least in part, by a web server and accessed by a webbrowser (e.g., a native application 204 a) of the user's computingdevice 200. Example web applications 204 b may include, but are notlimited to, web-based email, online auctions, and online retail sites.

In general, the user device 200 may communicate with the search system300 using any software application 204 that can transmit search queries212 to the search system 300. In some examples, the user device 200 runsa native application 204 a that is dedicated to interfacing with thesearch system 300, such as a native application 204 a dedicated tosearches (e.g., a search application 216). In some examples, the userdevice 200 communicates with the search system 300 using a more generalapplication 204, such as a web-browser application 204 b accessed usinga web browser native application 204 a. Although the user device 200 maycommunicate with the search system 300 using the native searchapplication 216 and/or a web-browser application 204 b, the user device200 may be described hereinafter as using the native search application216 to communicate with the search system 300. In some implementations,the functionality attributed to the search application 216 may beincluded as a searching component of a larger application 204 that hasadditional functionality. For example, the functionality attributed tothe search application 216 may be included as part of a nativeapplication 204 a or a web application 204 b as a feature that providessearch capabilities.

Native applications 204 a can perform a variety of different functionsfor a user 10. For example, a restaurant reservation application canmake reservations for restaurants. As another example, an internet mediaplayer application can stream media (e.g., a song or movie) from theInternet. In some examples, a single native application 204 a canperform more than one function. For example, a restaurant reservationapplication may also allow a user to retrieve information about arestaurant and read user reviews for the restaurant in addition tomaking reservations. As another example, an internet media playerapplication may also allow a user to perform searches for digital media,purchase digital media, and generate media playlists.

Referring to FIGS. 1A-2, the search system 300 includes a search module310 in communication with a search data store 320. The search data store320 may include one or more databases, indices (e.g., inverted indices),tables, files, or other data structures which may be used to implementthe techniques of the present disclosure. The search module 310 receivesa query wrapper 210 and generates search results 220 based on the dataincluded in the data store 320. In some implementations, the searchmodule 310 receives a query wrapper 210 from the user device 200 andperforms a search for function records 330 included in the search datastore 320 based on data included in the query wrapper 210, such as asearch query 212. The function records 330 include one or more accessmechanisms 202 that the user device 200 can use to access differentfunctions for a variety of different applications, such as nativeapplications 204 a installed on the user device 200. The search module310 transmits search results 220 including a list of access mechanisms202 to the user device 200 that generated the query wrapper 210.

The user device 200 generates user selectable links 230 based on thereceived search results 220 (e.g., links 230-1, 230-2, . . . , 230-5 ofFIG. 2). Each user selectable link 230 displayed to the user 10 mayinclude an access mechanism 202. The user 10 may select a userselectable link 230 on the user device 200 by interacting with the link230 (e.g., touching or clicking the link). In response to selection of alink 230, the user device 200 may launch a corresponding softwareapplication 204 (e.g., a native application 204 a or a web-browserapplication 204 b) referenced by the access mechanism 202 and performone or more operations indicated in the access mechanism 202.

Access mechanisms 202 may include at least one of a native applicationaccess mechanism 202 a (hereinafter “application access mechanism”), aweb access mechanism 202 b, and an application download mechanism 202 c.The user device 200 may use the access mechanisms 202 to accessfunctionality of applications 204. For example, the user 10 may select auser selectable link 230 including an access mechanism 202 in order toaccess functionality of an application 204 indicated in the userselectable link 230. The search module 310 may transmit one or moreapplication access mechanisms 202 a, one or more web access mechanisms202 b, and one or more application download mechanisms 202 c to the userdevice 200 in the search results 220.

An application access mechanism 202 a may be a string that includes areference to a native application 204 a and indicates one or moreoperations for the user device 200 to perform. If a user 10 selects auser selectable link 230 including an application access mechanism 202a, the user device 200 may launch the native application 204 areferenced in the application access mechanism 202 a and perform the oneor more operations indicated in the application access mechanism 202 a.

An application access mechanism 202 a includes data that the user device200 can use to access functionality provided by a native application 204a. For example, an application access mechanism 202 a can include datathat causes the user device 200 to launch a native application 204 a andperform a function associated with the native application 204 a.Performance of a function according to the access mechanism 202 may setthe native application 204 a into a specified state. Accordingly, theprocess of launching a native application 204 a and performing afunction according to an application access mechanism 202 a may bereferred to herein as launching the native application 204 a and settingthe native application 204 a into a state that is specified by theapplication access mechanism 202 a. In some examples, an applicationaccess mechanism 202 a for a restaurant reservation application caninclude data that causes the user device 200 to launch the restaurantreservation application and assist in making a reservation at arestaurant. In such examples, the restaurant reservation application maybe set in a state that displays reservation information to the user 10,such as a reservation time, a description of the restaurant, and userreviews. In additional examples, an application access mechanism 202 afor an internet media player application can include data that causesthe user device 200 to launch the internet media player application andstream media from the Internet. In such examples, the internet mediaplayer application may be set in a state that displays informationregarding the media (e.g., music) being streamed, such as a song name,an artist, or an album name.

Application access mechanisms 202 a may have various different formatsand content. The format and content of an application access mechanism202 a may depend on the native application 204 a with which theapplication access mechanism 202 is associated and the operations thatare to be performed by the native application 204 a in response toselection of the application access mechanism 202 a. For example, anapplication access mechanism 202 a for an internet music playerapplication may differ from an application access mechanism 202 a for ashopping application. An application access mechanism 202 a for aninternet music player application may include references to musicalartists, songs, and albums, for example. The application accessmechanism 202 a for an internet music player application may alsoreference operations, such as randomizing a list of songs and playing asong or album. An application access mechanism 202 a for a shoppingapplication may include references to different products that are forsale. The application access mechanism 202 a for the shoppingapplication may also include references to one or more operations, suchas adding products to a shopping cart and proceeding to a checkout.

The search system 300 transmits additional data in the search results220 along with the application access mechanisms 202 a. For example, thesearch system 300 may transmit data (e.g., link data 232, such as textand/or images) which may be used by the user device 200 to generate userselectable links 230 in the search results 220. A link 230 may includetext and/or images that the user 10 may select (e.g., touch) via a userinterface 240 displayed on a screen 201 (e.g., a display or touchscreen) of the user device 200. Each user selectable link 230 may beassociated with an application access mechanism 202 a such that when theuser 10 selects a link 230, the user device 200 launches the nativeapplication 204 a referenced in the application access mechanism 202 aand performs the one or more operations indicated in the applicationaccess mechanism 202 a. The text and/or images of a link 230 displayedto the user 10 may indicate the operations that will be performed inresponse to selection of the link 230. For example, if the link 230 isto a song in a music playing application, the text and/or images mayidentify the music application that will be launched by the user device200 and the song that will be played by the music playing applicationwhen the user 10 selects the link 230.

The user 10 may select a link 230 to cause the user device 200 to launchthe native application 204 a identified in the link 230 and perform oneor more operations according to the application access mechanism 202 aassociated with the link 230. Put another way, when the user 10 selectsa link 230, the user device 200 launches a native application 204 a andsets the native application 204 a into a state defined by theapplication access mechanism 202 a associated with the link. In general,a state of a native application 204 a may refer to the operations and/orthe resulting outcome of the native application 204 a in response toselection of a link 230. A state of a native application 204 a may alsobe referred to herein as an “application state.”

An application state specified by an application access mechanism 202 amay depend on the functionality provided by the native application 204a. For example, if a native application 204 a is configured to retrieveand display information from the Internet, the native application 204 acan be set into a state in which the native application 204 a retrievesinformation from the Internet and displays information to the user 10.In another example, if a native application 204 a is configured to playmedia (e.g., music and/or video) from the Internet, the nativeapplication 204 a can be set into a state in which the nativeapplication 204 a is playing a song or a movie from the Internet. Inanother example, if a native application 204 a is configured to makerestaurant reservations, the native application 204 a can be set into astate in which the native application 204 a displays availablerestaurant reservations to the user 10.

A web access mechanism 202 b may include a resource identifier thatincludes a reference to a web resource (e.g., a page of a webapplication/website). For example, a web access mechanism 202 b mayinclude a uniform resource locator (URL) (i.e., a web address) used withhypertext transfer protocol (HTTP). If a user 10 selects a userselectable link 230 including a web access mechanism 202 b, the userdevice 200 may launch the web browser application 204 b and retrieve theweb resource indicated in the resource identifier. Put another way, if auser 10 selects a user selectable link 230 including a web accessmechanism 202 b, the user device 200 may launch a correspondingweb-browser application 204 b and access a state (e.g., a page) of a webapplication/website. In some examples, web access mechanisms 202 binclude URLs for mobile-optimized sites and/or full sites.

The web access mechanism 202 b included in a function record 330 may beused by a web browser to access a web resource that includes similarinformation and/or performs similar functions as would be performed by anative application 204 a that receives an application access mechanism202 a of the function record 330. For example, the web access mechanism202 b of a function record 330 may direct the web-browser application204 b of the user device 200 to a web version of the native application204 a referenced in the application access mechanisms 202 a of thefunction record 330. Moreover, if the application access mechanisms 202included in a function record 330 for a specific Mexican restaurantcause each application edition to retrieve information for the specificMexican restaurant, the web access mechanism 202 b may direct theweb-browser application 204 b of the user device 200 to a web page entryfor the specific Mexican restaurant.

An application download mechanism 202 c may indicate a location (e.g., adigital distribution platform 130 b) where a native application 204 acan be downloaded in the scenario where the native application 204 a isnot installed on the user device 200. If a user 10 selects a userselectable link 230 including an application download mechanism 202 a,the user device 200 may access a digital distribution platform fromwhich the referenced native application 204 a may be downloaded. Theuser device 200 may access a digital distribution platform 130 b usingat least one of the web-browser application 204 b and one of the nativeapplications 204 a.

The search module 310 is configured to receive a query wrapper 210 fromthe user device 200 via the network 120. A query wrapper 210 may includea search query 212, which may include text, numbers, and/or symbols(e.g., punctuation) entered into the user device 200 by the user. Forexample, the user 10 may enter the search query 212 into a search field214 (e.g., a search box) of a graphical user interface (GUI) 240 of asearch application 216 running on the user device 200. A user 10 mayenter a search query 212 using a touchscreen keypad, a mechanicalkeypad, a speech-to-text program, or other form of user input. Ingeneral, a search query 212 may be a request for information retrieval(e.g., search results) from the search system 300. For example, a searchquery 212 may be directed to retrieving a list of links 230 toapplication functionality or application states in examples where thesearch system 300 is configured to generate a list of access mechanisms202 as search results 220. A search query 212 directed to retrieving alist of links 230 to application functionality may indicate a user'sdesire to access functionality of one or more applications described bythe search query.

The query wrapper 210 may include additional data along with the searchquery 212. For example, the query wrapper 210 may include geo-locationdata 218 that indicates the location of the user device 200, such aslatitude and longitude coordinates. The user device 200 may include aglobal positioning system (GPS) receiver that generates the geo-locationdata 218 transmitted in the query wrapper 210. The query wrapper 210 mayalso include an IP address 228, which the search module 310 may use todetermine the location of the user device 200. In some examples, thequery wrapper 210 may also include additional data, including, but notlimited to, platform data 222 (e.g., version of the operating system224, device type, and web-browser version), an identity of a user of theuser device 200 (e.g., a username), partner specific data, and otherdata.

The search module 310 can use the search query 212 and the additionaldata included in the query wrapper 210 to generate the search results220. For example, the search module 310 can determine a geo-location ofthe user device 200, which the search module 310 can use along with thesearch query 212 to generate the search results 220. The search module310 can determine the geo-location of the user device 200 based on thegeo-location data 218 or other data (e.g., IP address 228) included inthe query wrapper 210. In some implementations, the search module 310detects a location (e.g., a postal address, street name, city name,etc.) specified in the search query 212 (i.e., a query-specifiedlocation). In these implementations, the search module 310 can use thequery-specified location along with the search query 212 to generate thesearch results 220.

The search module 310 performs a search for function records 330included in the search data store 320 in response to the received querywrapper 210 (e.g., in response to the search query 212 and thegeo-location data 218). In some implementations, the search module 310generates result scores 226 for function records 330 identified duringthe search. The result score 226 associated with a function record 330may indicate the relevance of the function record 330 to the searchquery 212. A higher result score 226 may indicate that the functionrecord 330 is more relevant to the search query 212. The search module310 may retrieve access mechanisms 202 from the scored function records330. The search module 310 can transmit a result score 226 along with anaccess mechanism 202 retrieved from a scored function record 330 inorder to indicate the rank of the access mechanism 202 among othertransmitted access mechanisms 202.

An application access mechanism 202 a included in a function record 330may be an application resource identifier or a string that includes areference to a native application 204 a and/or indicates one or moreoperations for execution by the native application 204 a on the userdevice 200. An application resource identifier may be a string having anapplication specific scheme in some examples. For example, theapplication resource identifier may include a reference to a nativeapplication 204 a, a domain name, and a path to be used by the nativeapplication 204 a to retrieve and display information to the user 10. Insome examples, an application resource identifier is an applicationspecific resource identifier that is defined by the developer of theapplication 204. In this example, the search application 216 receivesthe application resource identifier and the operating system 224 maysend the application resource identifier to the native application 204 areferenced in the application resource identifier. The nativeapplication 204 a referenced in the application resource identifierlaunches and is set into the state specified by the application resourceidentifier.

In some examples, the application access mechanism 202 a includesoperations for the user device 200 to perform in addition to theoperation(s) indicated in the application resource identifier. Forexample, the search application 216, the operating system 224, and/or anative application 204 a on the user device 200 may perform theoperations included in the application access mechanism 202 a. In someexamples, a script includes the operations. Examples of operations mayinclude, but are not limited to, launching a native application 204 a,creating and sending a search request 212 (via a search wrapper 210) toan application server 112, setting a current geographic location in anative application 204 a, making a restaurant reservation, sending atext message, and adding an appointment to a calendar.

In some examples, an application access mechanism 202 a may not includean application resource identifier. Instead, the application accessmechanism 202 a includes one or more operations that reference a nativeapplication 204 a and indicate one or more operations for execution bythe user device 200. The one or more operations may include instructionsfor at least one of the search application 216, the operating system224, and/or a native application 204 a on the user device 200. Inresponse to selection of the application access mechanism 202 a, theuser device 200 may perform the operations included in the applicationaccess mechanism 202 a. In some examples, the operations may be includedin a script.

In some examples, an application function may not be accessible using anapplication resource identifier. For example, a function of theapplication may not include a corresponding application resourceidentifier that the application 204 may use to perform the function. Asanother example, some applications 204 may not be configured to receiveapplication resource identifiers. In these examples, an applicationaccess mechanism 202 for the native application 204 a can include one ormore operations that cause the native application to perform thefunction that may not otherwise be accessible using an applicationresource identifier. For example, the search application 216 may receivethe one or more operations and execute the one or more operations to setthe native application 204 a into the desired application state. In someexamples, the one or more operations may include launching the nativeapplication 204 a along with additional operations for the nativeapplication 204 a to perform. For example, the search application 216may initially trigger the native application 204 a to start and thenwait for a period of time for the native application 204 a to start.Then the search application 216 may perform additional operationsincluded in the received application access mechanism 202, such asissuing a search instruction to the native application 204 a.

In still other examples, a native application 204 a may be configured todirectly receive the operations transmitted by the search system 100. Inthese examples, the native application 204 a may be launched accordingto the application access mechanism 202 and then the launched nativeapplication 204 a may directly perform the operations received from thesearch system 100.

A single native application 204 a can provide a variety of differentfunctionalities. For example, a restaurant reservation application canaccess reviews for a variety of different restaurants and set upreservations at a variety of different restaurants. Similarly, a travelapplication can book hotels, book flights, and provide reviews fordifferent travel destinations. The different functionalities associatedwith a single native application may be accessed using a plurality ofdifferent application access mechanisms. For example, with respect tothe restaurant reservation application, the search data store 320 mayinclude function records 330 having different application accessmechanisms 202 for accessing different restaurant reviews and setting upreservations. Similarly, the search data store 320 may include functionrecords 330 having different application access mechanisms 202 forbooking hotels, booking flights, and accessing reviews for differenttravel destinations.

The application access mechanisms 202 for a single native application204 a may vary in complexity. In some examples, the application accessmechanisms 202 may cause a native application 204 a to launch (e.g., theoperating system 224 may be instructed to launch the application 204)and then perform additional operations after launching, as describedabove. In other examples, application access mechanisms 202 may cause anapplication 204 to launch into a default state (e.g., a defaulthomepage) without performing any additional operations. A functionrecord 330 including an application access mechanism 202 that causes anapplication 204 to launch into a default state may be thought of as anaccess mechanism 202 that is related to the native application 204 a,but not any particular state which may be accessed by the application204.

The search module 310 may transmit additional data to the user device200 along with the access mechanisms 202 and the result score(s) 226.For example, the search module 310 may transmit data (e.g., link data232, such as text and/or images) to be included in the user selectablelinks 230. Data for the user selectable links 230 (e.g., text and/orimages) may be referred to herein as “link data” (e.g., link data 232).The user device 200 displays the user selectable links 230 to the user10 based on received link data 232. Each user selectable link 230 may beassociated with an access mechanism 202 included in the search results220, such that when a user 10 selects a link 230, the user device 200launches the application 204 referenced in the access mechanism 202 andsets the application 204 into the state specified by the accessmechanism 202.

With reference to FIG. 2, the user device 200 may receive a set ofsearch results 220 from the search module 310 in response totransmission of the query wrapper 210 to the search system 300. The GUI240 of the search application 216 displays (e.g., renders) the searchresults 220 received from the search module 310. The search application216 may display the search results 220 to the user in a variety ofdifferent ways, depending on what information is transmitted to the userdevice 200. In examples where the search results 220 include a list ofaccess mechanisms 202 and link data 232 associated with the accessmechanisms 202, the search application 216 may display the searchresults 220 to the user 10 as a list of user selectable links 230including text and images. The text and images in the links 230 mayinclude application names associated with the access mechanisms 202,text describing the access mechanisms 202, images associated with theapplication 204 referenced by the access mechanisms 202 (e.g.,application icons), and images associated with the application state(e.g., application screen images) defined by the access mechanisms 202.

In some implementations, the search application 216 displays the searchresults 220 as a list of links 230 arranged under the search field 214in which the user 10 entered the search query 212. Moreover, the searchapplication 216 may arrange the links 230 in order based on resultscores 226 associated with the access mechanisms 202 included in thelinks 230. In some examples, the search application 216 groups the links230 together if the links 230 are related to the same application 204(e.g., a native application 204 a).

Each of the links 230 includes link data 232. For example, each of thelinks 230 includes an image (e.g., an icon) and text (e.g., anapplication or business name) that may describe an application and astate of an application. Each of the links 230 may include an accessmechanism so that if a user selects one of links 230, the user device200 launches the application and sets the application into a state thatis specified by the access mechanism associated with the selected link.In some implementations, the user device 200 may arrange the links 230based on result scores associated with the access mechanisms included inthe links 230. In some implementations, as illustrated in FIG. 2, links230 for the same application 204 may be combined together in the searchresults 220 displayed to the user 10.

With respect to FIG. 2, it may be assumed that the native application204 a for YELP® developed by Yelp, Inc., and the native application 204a for TRIPADVISOR® developed by TripAdvisor, Inc., are installed on theuser device 200. Links 230-1, 230-2 and link 230-3 reference the YELP®native application and the TRIPADVISOR® native application,respectively. The GUI 240 includes a header 242, including the name“Yelp,” under which the links 230-1, 230-2 are arranged. The header 242may indicate that the links 230-1, 230-2 arranged below the header 242are associated with the YELP® native application 204 a. Selection oflink 230-1 may cause the user device 200 to launch the YELP® nativeapplication 204 a and retrieve an IHOP® restaurant entry of the YELP®native application 204 a. Selection of link 230-2 may cause the userdevice 200 to launch the YELP® native application 204 a and retrieve aDENNY'S® restaurant entry of the YELP® native application 204 a.Selection of link 230-3 may cause the user device 200 to launch theTRIPADVISOR® native application 204 a and retrieve an entry for “Latenight diners” in the TRIPADVISOR® native application 204 a (e.g., asearch for “Late night diners”). The header 242 may include an expansionelement 250 for displaying all or some of the links 230 associated withthe header 242. The expansion element 250 includes a collapsed state 250a (FIGS. 8F and 8H) and an expanded state 250 b (FIGS. 8G and 8I) thatare mutually exclusive. As described, the expansion element 250 togglesbetween the collapsed state 250 a and the expanded state 250 b. Theexpansion element 250 may include an expansion button separate from acollapse button. In some examples, the search application 216 groupslinks 230 together when the links 230 are related to the sameapplication 204. In such a case, the search application 216 onlydisplays the header 242 associated with the application 204 and a user10 may select the expansion element 250 to view the links 230. In otherexamples, the search application 216 displays a threshold number oflinks 230 (e.g., three links 230) and when the user 10 selects theexpansion link 250 the remainder of the search results 220, i.e., links230 associated with the application 204 are displayed.

Link 230-4 includes a web access mechanism 202 b (e.g., a URL).Selection of link 230-4 may cause the user device 200 to launch theweb-browser application 204 b and retrieve an entry for “Late nightdiners” in the OPENTABLE® web-browser application 204 b developed byOpenTable, Inc. Link 230-5 includes an application download mechanism202 c for the URBANSPOON® native application 204 a by InterActiveCorp.Selection of link 230-5 may cause the user device 200 to access adigital distribution platform 130 b (FIG. 1B) from which the URBANSPOON®native application 204 a can be downloaded and/or previewed. The searchmodule 310 can be configured to transmit any combination of applicationaccess mechanisms 202 a, web access mechanisms 202 b, and applicationdownload mechanisms 202 c in the search results 220.

In some examples, user devices 200 communicate with the search system300 via a partner computing system (not illustrated). The partnercomputing system may be a computing system of a third party that mayleverage the search functionality of the search system 300. The partnercomputing system may belong to a company or organization other than thatwhich operates the search system 300. Example third parties which mayleverage the functionality of the search system 300 may include, but arenot limited to, internet search providers and wireless communicationsservice providers. The user devices 200 may send search queries to thesearch system 300 and receive search results via the partner computingsystem. The partner computing system may provide a user interface to theuser devices 200 in some examples and/or modify the search experienceprovided on the user devices 200.

FIG. 1B shows a plurality of data sources 130. The data sources 130 maybe sources of data which the search system 300 (e.g., the search module310) may use to generate and update the data store 320. The dataretrieved from the data sources 130 can include any type of data relatedto application functionality and/or application states. Data retrievedfrom the data sources 130 may be used to create and/or update one ormore databases, indices, tables (e.g., an access table), files, or otherdata structures included in the data store 320. For example, functionrecords 330 may be created and updated based on data retrieved from thedata sources 130. In some examples, some data included in a data source130 may be manually generated by a human operator. Data included in thefunction records 330 may be updated over time so that the search system300 provides up-to-date results.

The data sources 130 may include a variety of different data providers.The data sources 130 may include data from application developers 130 a,such as application developers' websites and data feeds provided bydevelopers. The data sources 130 may include operators of digitaldistribution platforms 130 b configured to distribute nativeapplications 204 a to user devices 200. Example digital distributionplatforms 130 b include, but are not limited to, the GOOGLE PLAY®digital distribution platform by Google, Inc., the APP STORE® digitaldistribution platform by Apple, Inc., and WINDOWS PHONE® Store developedby Microsoft Corporation.

The data sources 130 may also include other websites, such as websitesthat include web logs 130 c (i.e., blogs), application review websites130 d, or other websites including data related to applications.Additionally, the data sources 130 may include social networking sites130 e, such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and“TWITTER®” by Twitter Inc. (e.g., text from tweets). Data sources 130may also include online databases 130 f that include, but are notlimited to, data related to movies, television programs, music, andrestaurants. Data sources 130 may also include additional types of datasources in addition to the data sources described above. Different datasources 130 may have their own content and update rate.

The search system 300 retrieves data from one or more of the datasources 130. The data retrieved from the data sources 130 can includeany type of data related to application functionality and/or applicationstates. The search system 300 generates function records 330 based onthe data retrieved from the data sources 130. In some examples, a humanoperator manually generates some data included in the function records330. The search system 300 may update data included in the functionrecords 330 over time so that the search system 300 provides up-to-dateresults 220.

Referring to FIGS. 3A and 3B, the search data store 320 includes aplurality of different function records 330. Each function record 330may include data related to a function of an application 204 and/or thestate of the application 204 resulting from performance of the function.A function record 330 may include a function identifier (ID) 332,application state information 334, an application identifier (ID) 336,and one or more access mechanisms 202, 202 a, 202 b, 202 c used toaccess functionality provided by an application 204.

The function ID 332 may be used to identify the function record 330among the other function records 330 included in the search data store320. The function ID 332 may be a string of alphabetic, numeric, and/orsymbolic characters (e.g., punctuation marks) that uniquely identifiesthe associated function record 330. In some examples, the function ID332 describes a function and/or an application state in human readableform. For example, the function ID 332 may include the name of theapplication 204 referenced in the access mechanism(s) 202. In a specificexample, a function ID 332 for an internet music player application mayinclude the name of the internet music player application along with thesong name that will be played when the internet music player applicationis set into the state defined by the application access mechanismincluded in the function record. Additionally or alternatively, thefunction ID 332 may be a human readable string that describes a functionperformed according to the access mechanism(s) 202 and/or an applicationstate resulting from performance of the function according to the accessmechanism(s) 202. In some examples, the function ID 332 includes astring in the format of a uniform resource locator (URL) of a web accessmechanism 202 b for the function record 330, which may uniquely identifythe function record 330.

In a more specific example, if the function record 330 describes afunction of the YELP® native application, the function ID 332 mayinclude the name “Yelp” along with a description of the applicationstate described in the application state information 334. For example,the function ID 332 for a function record 330 that describes therestaurant named “The French Laundry” may be “Yelp—The French Laundry.”In an example where the function ID 332 includes a string in the formatof a URL, the function ID 332 may include the following string“http://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1” touniquely identify the function record 330. In additional examples, thefunction ID 332 may include a URL using a namespace other than“http://,” such as “func://,” which may indicate that the URL is beingused as a function ID in a function record. For example, the function ID332 may include the following string“func://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1.”

The application state information 334 may include data that describes anapplication state into which an application 204 is set according to theaccess mechanism(s) 202 in the function record 330. Additionally oralternatively, the application state information 334 may include datathat describes the function performed according to the accessmechanism(s) 202 included in the function record 330. The applicationstate information 334 can include text, numbers, and symbols thatdescribe the application state. The types of data included in theapplication state information 334 may depend on the type of informationassociated with the application state and the functionality specified bythe application access mechanism 202 a. The application stateinformation 334 may include a variety of different types of data, suchas structured, semi-structured, and/or unstructured data. Theapplication state information 334 may be automatically and/or manuallygenerated based on documents retrieved from the data sources 130.Moreover, the application state information 334 may be updated so thatup-to-date search results 220 can be provided in response to a searchquery 212.

In some examples, the application state information 334 includes datathat may be presented to the user 10 by an application 204 when theapplication 204 is set in the application state defined by the accessmechanism(s) 202. For example, if one of the access mechanism(s) 202 isan application access mechanism 202 a, the application state information334 may include data that describes a state of the native application204 a after the user device 200 has performed the one or more operationsindicated in the application access mechanism 202 a. For example, if thefunction record 330 is associated with a shopping application, theapplication state information 334 may include data that describesproducts (e.g., names and prices) that are shown when the shoppingapplication is set to the application state defined by the accessmechanism(s) 202. As another example, if the function record 330 isassociated with a music player application, the application stateinformation 334 may include data that describes a song (e.g., name andartist) that is played when the music player application is set to theapplication state defined by the access mechanism(s) 202.

The types of data included in the application state information 334 maydepend on the type of information associated with the application stateand the functionality defined by the access mechanism(s) 202. Forexample, if the function record 330 is for an application 204 thatprovides reviews of restaurants, the application state information 334may include information (e.g., text and numbers) related to arestaurant, such as a category of the restaurant, reviews of therestaurant, and a menu for the restaurant. In this example, the accessmechanism(s) 202 may cause the application 204 (e.g., a nativeapplication 204 a or a web-browser application 204 b) to launch andretrieve information for the restaurant. As another example, if thefunction record 330 is for an application 204 that plays music, theapplication state information 334 may include information related to asong, such as the name of the song, the artist, lyrics, and listenerreviews. In this example, the access mechanism(s) 202 may cause theapplication 204 to launch and play the song described in the applicationstate information 334.

The search system 300 may generate application state information 334included in a function record 330 in a variety of different ways. Insome examples, the search system 300 retrieves data to be included inthe application state information 334 via partnerships with databaseowners and developers of native applications 204 a. For example, thesearch system 300 may automatically retrieve the data from onlinedatabases 130 f that include, but are not limited to, data related tomovies, television programs, music, and restaurants. In some examples, ahuman operator manually generates some data included in the applicationstate information 334. The search system 300 may update data included inthe application state information 334 over time so that the searchsystem 300 provides up-to-date results 220.

The application ID 336 may be used to identify a native application 204a associated with the function record 330. The application ID 336 may bea string of alphabetic, numeric, and/or symbolic characters (e.g.,punctuation marks) that uniquely identifies the associated nativeapplication 204 a. In some examples, the application ID 336 the nativeapplication 204 a in human readable form. For example, the applicationID 336 may include the name of the application 204 referenced in theaccess mechanism(s) 202. In a specific example, the application ID 336for a restaurant finder application 204 may include the name of therestaurant finder application.

A function record 330 including an application access mechanism 202 thatcauses an application 204 to launch into a default state may includeapplication state information 334 describing the native application 204a, instead of any particular application state. For example, theapplication state information 334 may include the name of the developerof the application 204, the publisher of the application 204, a category335 a (e.g., genre) of the application 204, a description 335 b of theapplication 204 (e.g., a developer's description), and the price of theapplication 204. The application state information 334 may also includesecurity or privacy data about the application 204, battery usage of theapplication 204, and bandwidth usage of the application 204. Theapplication state information 334 may also include applicationstatistics. Application statistics may refer to numerical data relatedto a native application 204 a. For example, application statistics mayinclude, but are not limited to, a number of downloads, a download rate(e.g., downloads per month), a number of ratings, and a number ofreviews.

FIG. 3B shows an example function record 330 associated with theOPENTABLE® application, developed by OpenTable, Inc. The OPENTABLE®application is a restaurant-reservation application that allows users tosearch for restaurants and make restaurant reservations. The OPENTABLE®application provides information about restaurants includingdescriptions of restaurants and user reviews of the restaurants. Theexample function record 330 of FIG. 3B describes an application state ofthe OPENTABLE® application in which the OPENTABLE® application accessesinformation for THE FRENCH LAUNDRY® restaurant.

The example function record 330 includes a function ID 332 of“OPENTABLE—THE FRENCH LAUNDRY,” which may be used as a unique identifierto identify the function record 330. In other examples, the function ID332 could include a URL as a unique identifier for the function record330. For example, the function ID 332 may include the string“http://www.opentable.com/the-french-laundry” as a unique identifier forthe function record 330. As described herein, such a function ID may beincluded in a web access mechanism 202 b of a function record 330. Asanother example, the function ID 332 may have a different namespace than“http://,” such as “func://.” In yet another example, the function ID332 could be a string of characters, numbers, and/or symbols that arenot in human readable form. Each example is optional and may be combinedwith other examples.

The example application state information 334 includes data fields 335,such as a category 335 a of THE FRENCH LAUNDRY® restaurant, adescription 335 b of THE FRENCH LAUNDRY® restaurant, user reviews 335 cof THE FRENCH LAUNDRY® restaurant, and additional data fields 335. Therestaurant category 335 a field may include the text “French cuisine”and “contemporary,” for example. The description field 335 b may includetext that describes THE FRENCH LAUNDRY® restaurant. The user reviewsfield 335 c may include text of user reviews for THE FRENCH LAUNDRY®restaurant. The additional data fields 335 may include additional datafor THE FRENCH LAUNDRY® restaurant that may not specifically fit withinthe other defined fields, such as a menu for the restaurant, prices, andoperating hours for the restaurant.

The function record 330 includes one or more access mechanism(s) 202.The access mechanism(s) 202 may include a reference to the OPENTABLE®application 204. An example application access mechanism 202 a for thefunction record 330 may include a reference to the OPENTABLE® nativeapplication 204 a along with one or more operations to be performed bythe user device 200. For example, the application access mechanism 202 amay include an application resource identifier and/or one or moreoperations that cause the user device 200 to access the entry for THEFRENCH LAUNDRY® restaurant in the OPENTABLE® native application. Anexample application resource identifier may be“vnd.opentable.deeplink://opentable.com/restaurant/profile?rid=1180&refid=1.”

In some implementations, a function record 330 includes multipledifferent application access mechanisms 202, 202 a, 202 b, 202 c thatmay include a variety of information. The application access mechanism202 may include edition information that indicates the applicationedition with which the application access mechanism 202 is compatible.For example, the edition information may indicate the operating system224 with which the application access mechanism 202 is compatible.Moreover, different application access mechanisms 202 may be associatedwith different editions of a native application 204 a. A nativeapplication edition (hereinafter “application edition”) refers to aparticular implementation or variation of a native application 204 a.For example, an application edition may refer to a version of a nativeapplication 204 a, such as a version 1.0 of a native application 204 aor a version 2.0 of a native application 204 a. In another example, anapplication edition may refer to an implementation of a nativeapplication 204 a for a specific platform, such as a specific operatingsystem 224.

The different application access mechanisms 202 included in a functionrecord 330 may cause the corresponding application editions to launchand perform similar functions. Accordingly, the different applicationaccess mechanisms 202 included in a function record 330 may cause thecorresponding application editions to be set into similar applicationstates. For example, if the different application access mechanisms 202reference different editions of an information retrieval application,the different application access mechanisms 202 may cause thecorresponding application editions to retrieve similar information. Inanother example, if the different application access mechanisms 202reference different editions of an internet music player application,the different application access mechanisms 202 may cause thecorresponding application editions to play the same song.

In some examples, a function record 330 for a native application thatretrieves restaurant information may include multiple differentapplication access mechanisms 202 for multiple different applicationeditions. Assuming the function record 330 is associated with a specificMexican restaurant, the application access mechanisms 202 for thedifferent application editions may cause each application edition toretrieve information for the same specific Mexican restaurant. Forexample, a first application access mechanism 202 may cause a firstapplication edition (e.g., on a first OS) to retrieve information forthe specific Mexican restaurant. A second application access mechanism202 may cause a second application edition (e.g., on a second OS) toretrieve information for the specific Mexican restaurant. In someexamples, the search system 300 can determine whether to transmit theapplication access mechanism 202 in the search results 220 based onwhether the user device 200 can handle the application access mechanism202.

Referring also to FIG. 2, the search system 300 generates search results220 including a list of application access mechanisms 202 that areincluded in selected function records 330. Initially, the search system300 analyzes the search query 212 received from the user device 200. Thesearch system 300 then identifies a set of function records 330 based onthe received search query 212. For example, the search system 300 mayidentify the set of function records 330 based on matches (e.g., textmatches) between terms of the search query 212 and terms of theapplication state information 334 included in the identified functionrecords 330.

The search system 300 processes (e.g., scores) the identified set offunction records 330. For example, the search system 300 may determinehow well the function records 330 match the received search query 212.The search system 300 may then select the application access mechanisms202 from the function records 330 that best match the received searchquery 212. The search system 300 transmits search results 220 includingthe selected application access mechanisms 202 to the user device 200that generated the search query 212. The search system 300 may alsotransmit additional data along with the application access mechanisms202. For example, the search system 300 may transmit data (e.g., linkdata 232, such as text and/or images) to be included in user selectablelinks 230.

During some searches, the search system 300 may identify one or morefunction records 330 that include multiple application access mechanisms202. In these scenarios, the search system 300 may process (e.g., score)the identified set of function records 330 in the manner describedabove. For each identified function record 330 including multipleapplication access mechanisms 202, the search system 300 may selectwhich application access mechanisms 202 to transmit to the user device200. In some examples, the search system 300 transmits each of theapplication access mechanisms 202 of the identified function record 330to the user device 200 so that the user device 200 may determine whichapplication access mechanism 202 to use. In other examples, the searchsystem 300 determines which of the multiple application accessmechanisms 202 to transmit to the user device 200 based on informationincluded in the query wrapper 210 received from the user device 200. Forexample, the search system 300 may select and transmit one or more ofthe application access mechanisms 202 that are likely to be compatiblewith the user device 200, e.g., based on a version of the operatingsystem 224 of the user device 200.

During some searches, the search system 300 may identify one or morefunction records 330 that include application access mechanisms 202 aand one or more web access mechanisms 202 b. In these scenarios, thesearch system 300 may process (e.g., score) the identified set offunction records 330 in the manner described above. For each identifiedfunction record 330 including application access mechanisms 202 a and aweb access mechanism 202 b, the search system 300 may determine whetherto transmit the web access mechanism 202 b and the application accessmechanisms 202 a. In some examples, the search system may transmit theweb access mechanism and each of the multiple application accessmechanisms to the user device so that the user device can determinewhich of the access mechanisms to use. In other examples, the searchsystem may determine whether any of the application access mechanismsshould be transmitted to the user device. If the search systemdetermines that none of the application access mechanisms are likely tobe compatible with the user device, the search system can refrain fromsending the application access mechanisms to the user device. Instead,the search system may transmit the web access mechanism to the userdevice. As described above, the user device may use a web browser toaccess the web resource identified in the web access mechanism.

Referring to FIGS. 1B, 2, 3C and 3D, in some implementations, the searchresults 220 include an advertisement 371. The advertisement icon 371 isindicative of an advertisement from an advertiser. An advertiser maygenerally refer to any party that advertises on search results 220displayed on a user screen 201 (e.g., a display or touchscreen)generated by a search system 300, either to advertise its own goods andservices or the goods and services of a related party. An advertiser canadvertise, for example, a business, products, services, media content,or any other suitable item of commerce referenced in an application 204.The search results 220 displayed on a user screen 201 provideadvertisers with a medium to advertise websites or other services.Typically, an advertiser can register one or more keywords and anadvertisement with a company that provides the service of the searchand/or provides the search result page, such that when a search system300 user 10 includes the one or more keywords in a search query 212, thesearch system 300 may also include the advertisements 371 correspondingto the one or more keywords in the search results 220. The search system300 can sell the keywords according to different advertising schemes,including cost per number of impressions (e.g., number of views), costper click-through, and cost per action. According to the cost per numberof views model, the advertiser agrees to pay a specified amount eachtime the advertisement is displayed a specified number of times on aresult page in response to a relevant search query 212. According to thecost per click-through model, the advertiser agrees to a pay a specifiedamount each time a user 10 clicks on the advertisement 271 displayed inresponse to a relevant search query 212. According to the cost peraction model, the advertiser agrees to pay a specified amount each timea user 10 performs a specific action in response to the advertisement271 being displayed. For example, the advertiser can agree to pay thespecified amount when a user 10 clicks on a hyperlink in theadvertisement 271 and makes a purchase from the website associated withthe advertisement 271.

In some implementations, an advertisement system 360 generates one ormore advertisements 371 for the user 10. The advertisement system 360transmits (e.g., serves) the generated advertisement 371 to thecomputing device 200 of the user 10. The computing device 200 of theuser 10 may display on the display 201 of the user computing device 200the advertisement 371 along with the search results 220. Theadvertisement 371 may include information indicating that theadvertisement 371 is a sponsored result. For example, the advertisement371 may include text indicating that the sponsored application is a“Sponsored Result” an “Advertisement” or an “AD.”

The advertisement system 360 includes an advertisement data store 362that the advertisement system 360 may use to generate advertisements371. The advertisement data store 362 includes data associated with aplurality of different advertisements 371. The data associated with anadvertisement 371 may be referred to as an “an advertisement record”(e.g., advertisement record 370 of FIG. 3C). The advertisement datastore 362 may include a plurality of advertisement records 370 that eachinclude data for a different advertisement 371. The advertisementrecords 370 may be generated by advertisers (using advertiser devices368), by advertisement agencies, or by providers of any of the searchand advertisement generation functionalities described above (i.e., byproviders of one or more of the search system 300 and the advertisementsystem 360). An advertisement 371 may include an applicationadvertisement or an entity (e.g., business) advertisement.

An advertisement record 370 may include a variety of different types ofdata related to an advertisement 371. An advertisement record 370 mayinclude data that identifies the advertisement record 370. For example,the advertisement record 370 may include an advertisement name and/oradvertisement identifier (i.e., an “advertisement ID”) 372 thatidentifies the advertisement record 370 among the differentadvertisement records 370 in the advertisement data store 362.

An advertisement record 370 may also include a sponsored applicationname and/or sponsored application ID that identifies a sponsoredapplication and/or a business associated with the advertisement record370. A sponsored application 204 may be an application 204 for which anadvertiser has paid to have the application 204 displayed to a user 10.For example, an advertiser may pay for a sponsored application 204 to beadvertised along with search results generated by the search system 300.The advertisement record 370 includes advertisement content 376 used togenerate an advertisement 371 for the sponsored application 204 of theadvertisement record 372. For example, advertisement content may includetext, images (e.g., icons), animations, and videos associated with thesponsored application 204. The advertisement 371 (e.g., text and images)for a sponsored application 204 may be displayed along with the list ofapplications 204 included in the search results 220 on a user'scomputing device 200.

The advertisement record 370 may also include advertisement parameters378. Advertisement parameters 378 may define budget parameters 392associated with advertising the sponsored application 204. Advertisementparameters 378 may also define timing parameters 394 associated withadvertising the sponsored application 204, such as start and stop datesfor advertising the sponsored application 204 and/or time(s) of dayduring which the sponsored application 204 is to be advertised.Additionally, advertisement parameters 378 may specify user parametersassociated with advertising the sponsored application 204, such as,e.g., one or more search query languages for which the sponsoredapplication 204 is to be advertised and/or the number of times aparticular advertisement is to be displayed to each user 10. Otherparameters are possible as well.

Advertisement parameters 378 may also include a variety of differenttypes of targeting parameters 380. A targeting parameter 380 may referto a condition that should be satisfied before the advertisement system360 generates an advertisement 371. The advertisement system 360 may usetargeting parameters 380 in an advertisement record 370 to determinewhether to generate an advertisement 371 for the sponsored application204 of the advertisement record 370. For example, the advertisementsystem 360 may generate an advertisement 371 for the sponsoredapplication 204 listed in an advertisement record 370 when one or moretargeting parameters 380 of the advertisement record 370 are satisfied.Example types of targeting parameters 380 may include, but are notlimited to, keyword targeting parameters 382 and platform targetingparameters 384.

Additional advertisement (e.g., target) parameters 378 may include,e.g., time-slotting, day-parting, category, geographical, contextual,demographic, behavioral, platform, device, and partner parameters. Inother words, in some examples, the advertisement system 360 may generatean advertisement 371 for a sponsored application 204 in one or more ofthe following instances: 1) during one or more designated time slots; 2)on one or more given days or during one or more specified portionsthereof; 3) for one or more particular categories of applications 204included in the search results 220; 4) for users 10 located in one ormore geographic locations or regions; 5) based on context (e.g., for oneor more states of the user's computing device 200, the search system300, and/or the advertisement system 360); 6) for one or more specifieduser types or groups; 7) when one or more user behaviors are detected(e.g., when the user 10 interacts with the user's computing device 200in a particular manner); 8) for one or more platform (e.g., operatingsystem) and device types associated with the user's computing device 200or the applications 204 included in the search results 220; or 9) whenone or more specified partner computing systems are used (e.g., when theuser's computing device 200 communicates with the search system 300and/or the advertisement system 360 via a designated partner computingsystem).

An advertisement record 370 may include a targeting parameter function381. A targeting parameter function 381 may define which of thetargeting parameters 380 of the advertisement record 370 should besatisfied in order to generate an advertisement 371. In some examples,the targeting parameter function 381 includes a single targetingparameter 380. In these examples, the advertisement system 360 maygenerate an advertisement 371 for a sponsored application 204 based onsatisfaction of a single targeting parameter 380, such as a similaritytargeting parameter 381 or a keyword targeting parameter 384. In otherexamples, the targeting parameter function 381 includes multipledifferent targeting parameters 380. In these examples, the advertisementsystem 360 may generate an advertisement 371 for a sponsored application204 based on satisfaction of multiple targeting parameters 380, such asone or more similarity targeting parameters 381, one or more keywordtargeting parameters 382, and a platform targeting parameter 384. Inscenarios where a targeting parameter function 381 includes multipletargeting parameters 380, the targeting parameter function 381 mayinclude a Boolean function that includes the multiple targetingparameters 380.

FIG. 4A shows an example search module 310 that includes a queryanalysis module 400, a consideration set generation module 402(hereinafter “set generation module 402”), and a consideration setprocessing module 404 (hereinafter “set processing module 404”). Thequery analysis module 400 receives the query wrapper 210 and analyzesthe received search query 212. The query analysis module 400 may performvarious analysis operations on the received search query 212, which mayinclude, but are not limited to, tokenization of the search query 212,filtering of the search query 212, stemming, synonymization, and stopword removal. In some implementations, the query analysis module 400detects a query-specified location included in the search query 212.

The set generation module 402 identifies a plurality of function records330 based on the received search query 212. In some examples, the setgeneration module 402 identifies the function records 330 based onmatches between terms of the search query 212 and terms in the functionrecords 330. For example, the set generation module 402 may identify thefunction records 330 based on matches between tokens generated by thequery analysis module 400 and words included in the function records330, such as words included in the function IDs 332 and/or theapplication state information 334.

The consideration set 350 of function records 330 may refer to thefunction records 330 that are to be scored by the set processing module404. The set generation module 402 may determine the geo-location of theuser device 200 based on data included in the query wrapper 210. Inadditional examples, if the query analysis module 400 detects aquery-specified location, the set generation module 402 uses thequery-specified location as the search location. In some examples, theset generation module 402 uses the geo-location of the user device 200as the search location (e.g., to filter function records 330 based onlocation).

The set processing module 404 may score the function records 330 in theconsideration set 350 in order to generate a set of search results 220.The scores 226 associated with the function records 330 may be referredto as “result scores.” The set processing module 404 may determine aresult score 226 for each of the function records 330 in theconsideration set 350. The result scores 226 associated with a functionrecord 330 may indicate the relative rank of the function record 330(e.g., by the access mechanisms 202) among other function records 330.For example, a larger result score 226 may indicate that a functionrecord 330 is more relevant to the received search query 212.

The set processing module 404 selects application access mechanisms 202from the selected function records 330 (e.g., the highest scoringfunction records). The set processing module 404 transmits the selectedapplication access mechanisms 202 to the user device 200 that generatedthe search query 212. The set processing module 404 may also transmitthe result scores 226 associated with the selected application accessmechanisms 202. For example, an application access mechanism 202 may beassociated with the result score 226 of the function record 330 fromwhich the application access mechanism 202 was selected.

The information conveyed by the search results 220 may depend on how theresult scores 226 are calculated by the set processing module 404. Forexample, the result scores 226 may indicate the relevance of anapplication function or application state to the search query 212, thepopularity of an application function or state, or other properties ofthe application function or state, depending on what parameters the setprocessing module 404 uses to score the function records 330.

The set processing module 404 may generate result scores 226 forfunction records 330 in a variety of different ways. In someimplementations, the set processing module 404 generates a result score226 for a function record 330 based on one or more scoring features. Thescoring features may be associated with the function record 330 and/orthe search query 212. A function record scoring feature (hereinafter“record scoring feature”) may be based on any data associated with afunction record 330. For example, record scoring features may be basedon any data included in the application state information 334 of thefunction record 330. Example record scoring features may be based onmetrics associated with a person, place, or thing described in thefunction record 330. Example metrics may include the popularity of aplace described in the function record 330 and/or ratings (e.g., userratings) of the place described in the function record 330. For example,if the function record 330 describes a song, a metric may be based onthe popularity of the song described in the function record 330 and/orratings (e.g., user ratings) of the song described in the functionrecord 330. The record scoring features may also be based onmeasurements associated with the function record 330, such as how oftenthe function record 330 is retrieved during a search and how oftenaccess mechanisms 202 of the function record 330 are selected by a user10. Record scoring features may also be based on whether the functionrecord 330 includes an application access mechanism 202 that leads to adefault state or a deeper native application state.

A query scoring feature may include any data associated with the searchquery 212. For example, query scoring features may include, but are notlimited to, a number of words in the search query 212, the popularity ofthe search query 212, and the expected frequency of the words in thesearch query 212. A record-query scoring feature may include any datagenerated based on data associated with both the function record 330 andthe search query 212 that resulted in identification of the functionrecord 330 by the set generation module 402. For example, record-queryscoring features may include, but are not limited to, parameters thatindicate how well the terms of the search query 212 match the terms ofthe application state information 334 of the identified function record330. The set processing module 404 may generate a result score 226 for afunction record 330 based on at least one of the record scoringfeatures, the query scoring features, and the record-query scoringfeatures.

The set processing module 404 may determine a result score 226 for afunction record 330 based on one or more of the scoring features listedherein and/or additional scoring features not explicitly listed. In someexamples, the set processing module 404 may include one or more machinelearned models (e.g., a supervised learning model) configured to receiveone or more scoring features. The one or more machine learned models maygenerate result scores 226 based on at least one of the record scoringfeatures, the query scoring features, and the record-query scoringfeatures. For example, the set processing module 404 may pair the searchquery 212 with each function record 330 and calculate a vector offeatures for each (query, record) pair. The vector of features mayinclude one or more record scoring features, one or more query scoringfeatures, and one or more record-query scoring features. The setprocessing module 404 may then input the vector of features into amachine-learned regression model to calculate a result score for thefunction record 330. In some examples, the machine-learned regressionmodel may include a set of decision trees (e.g., gradient boosteddecision trees). In another example, the machine-learned regressionmodel may include a logistic probability formula. In some examples, themachine learned task can be framed as a semi-supervised learning task,where a minority of the training data is labeled with human curatedscores and the rest are used without human labels.

The result scores 226 associated with the function records 330 (e.g.,access mechanisms 202) may be used in a variety of different ways. Theset processing module 404 and/or the user device 200 may rank the accessmechanisms 202 based on the result scores 226 associated with the accessmechanisms 202. In these examples, a larger result score may indicatethat the access mechanism 202 (e.g., the function or application state)is more relevant to a user than an access mechanism 202 having a smallerresult score. In examples where the user device 200 displays the searchresults 220 as a list, the user device 200 may display the links 230 foraccess mechanisms 202 having larger result scores 226 nearer to the topof the results list (e.g., near to the top of the screen). In theseexamples, the user device 200 may display the links 230 for accessmechanisms 202 having lower result scores 226 farther down the list(e.g., off screen). In some examples, as illustrated in FIG. 2, the userdevice 200 groups together the links 230 associated with the same nativeapplication 204 a.

Referring to FIG. 4B, in some implementations, the set processing module404 filters the function records 330 based on one or more criteria. Thecriteria may be based on characteristics of the function records 330and/or characteristics associated with the user 10. In the exampleshown, the set processing module 404 filters the function records 330based on application ID 336. If the set generation module 402 generatesa consideration set 350 of function records 330 (or function IDs 332corresponding to function records 330, as shown) and the considerationset 350 includes a number of function records 330 associated with thesame application 204, the set processing module 404 may filter thefunction records 330 (e.g., based on application ID 336) to reduce theconsideration set 350. The set processing module 404 may restrict thenumber of function records 330 associated with any one application 204to a maximum number of function records 330 for that application 204.For example, if the consideration set 350 includes five function records330 for the YELP® native application 204 a, but the set processingmodule 404 has a policy that limits the number of function records 330for any given application 204 to three function records 330, the setprocessing module 404 can eliminate two of the five function records 330from the consideration set 350 (or results 220). The set processingmodule 404 may eliminate function records 330 based on their resultscore 226 and/or some other metric, such as location, user preference,etc. The set processing module 404 may implement a policy of limitingfunction records 330 associated with one or more applications 204 tolimit the result set 220 to a manageable number or a number practicalfor displaying on the user device 200.

In some implementations, the set processing module 404 groups thefunction records 330. The set processing module 404 may group byapplication ID 336, access mechanism 202, application state information334, a result score 226, or some other attribute associated with thefunction record 330. By grouping the function records 330 by applicationID 336, the search application 216 can display the search results 220 inan organized or ordered fashion. By grouping the function records 330 byresult score 226, the search application 216 can display the searchresults 220 in an order based on relevancy to the search query 212.Moreover, the set processing module 404 may group function records 330by multiple grouping attributes, for example, by result score 226 andapplication ID 336. Grouping by multiple attributes can result in groupsand sub-groups. In the example shown, the consideration set 350 includesthree function records 330 for the YELP® native application 204 a (i.e.,function records 330 have example function IDs 332 of Yelp A, Yelp B,and Yelp C). After scoring the consideration set 350, the set processingmodule 404 groups the function records 330 by result score 226 andapplication ID 336. The resulting consideration set 350 (or result set220) includes a list of function records 330 (or function IDs 332referencing the function records 330, as shown) with the three functionrecords 330 for the YELP® native application 204 a in consecutive orderbased on their corresponding result score 226. Other methods of groupingare possible as well.

Referring to FIG. 4C, in some implementations, the processing module 404filters the function records 330 based on one or more criteria. Thecriteria may be based on characteristics of the function records 330and/or characteristics associated with the user 10. In the exampleshown, the set processing module 404 filters the function records 330based on the application ID 336. If the set generation module 402generates a consideration set of function records 330 (or function IDs332 corresponding to function records 330, as shown) and theconsideration set 350 includes a number of function records 330associated with the same application 204, the set processing module 404may filter the function records 330 (e.g., based on the application ID336) to reduce the consideration set 350. In some examples, the setprocessing module 404 restricts the number of function records 330associated with any one application 204 to a maximum number of functionrecords 330 for that application 204; however, in other examples, theset processing module 404 does not restrict the number of functionrecords 330. For example, if the consideration set 350 includes tenfunction records 330 for YELP® native application 204 a shown as APP 1in FIG. 4C, the set processing module 404 may provide all the functionrecords 330 of the consideration set 330 (or result set 220).

In some implementations, the set processing module 404 groups thefunction records 330 by the application ID 336, access mechanism 202,application state information 334, result score 226, or some otherattribute associated with the function records 330, allowing the searchapplication 216 to display the search results 220 in an organized andorderly fashion. Also, by grouping the function records 330 by theresult score 226, the search application 216 can display the searchresults 220 in an order based on the relevancy of the search query 212.Moreover, the set processing module 404 may group function records 330by multiple grouping attributes resulting in groups and sub-groups, forexample, by result score 226 and application ID 336. In the exampleshown in FIG. 4C, the consideration set 350 includes ten functionrecords 350 for APP 1 e.g., YELP® native application 204 a (i.e.,function records 330 have example function IDs 332 of APP 1A, APP 1B,APP 1C, APP 1D, APP 1E, APP 1F, APP 1G, APP 1H, APP 1I, and APP 1J). Theconsideration set 330 also includes three function records 350 for APP 2(i.e., function records 330 have example function IDs 332 of APP 2A, APP2B, and APP 2C). After the set processing module 404 scores theconsideration set 350, the set processing module 404 groups the functionrecords 330 by result score 226 and application ID 226. The resultingconsideration set 350 (or result set 220) includes a list of functionrecords 330 (or function IDs 332 referencing the function records 330,as shown) with all ten function records 330 for APP 1 e.g., YELP® nativeapplication 204 a in consecutive order based on their correspondingresult score 226. In some examples, a function record 330 is notavailable for an application 204, therefore, the consideration set 330includes the application 204 without any function records 330 associatedwith the application 204, as shown in the ungrouped set. Other methodsof grouping are possible as well.

Referring to FIG. 4D, in some implementations, an example advertisementsystem 360 includes an advertisement data store 362, a record generationmodule 364, and advertisement generation module 366. The advertisementsystem 360 generates one or more advertisements 371 for a user 10. Theadvertisement system 360 receives advertisement data from an advertiserdevice(s) 368 and the record generation module 364. The recordgeneration module 364 generates an advertisement record 370 and storesthe advertisement record 370 in the advertisement data store 362. Theadvertisement data store 362 includes data associated with the pluralityof different advertisements 371, i.e., advertisement records 370. Theadvertisement record 370 may include a variety of different types ofdata related to an advertisement 371. An advertisement record 370 mayinclude data that identifies the advertisement record 370 (see FIGS. 3Cand 3D).

The advertisement system 360 includes an advertisement generation module366 in communication with the user device 200 and the search system 300.The advertisement generation module 366 receives search results from thesearch system 300 (e.g., search module 310), the query wrapper 210 fromthe user device 200, and based on the received search results 220 andthe query wrapper 210, the advertisement generation module 366determines the advertisements 371 to send to the user device 200. Theadvertisement generation module 366 identifies one or more advertisementrecords 370 based on the received search results 220 and the receivedquery wrapper 210. In some examples, the advertisement generation module366 identifies advertisement records 370 based on matches between termsof the search query 212 and terms in the advertisement records 370. Forexample, the advertisement generation module 366 may identify theadvertisement records 370 based on matches between tokens generated bythe query analysis module 400 and words included in the advertisementrecords 370, such as words included in the advertisement ID 372 and/orany other parameter associated with the advertisement record 370.

In some implementations, the advertisement generation module 366 maydetermine the geo-location of the user device 200 based on data includedin the query wrapper 210. The advertisement generation module 366 mayfilter advertisements 371 associated with the geo-location of the userdevice 200, and send the selected advertisements 371 based on thegeo-location of the user device 200.

The advertisement generation module 366 is in communication with thesearch data store 320. In some examples, the advertisement generationmodule 366 associates a different advertisement 371 with one or moresearch results 220 (e.g., access mechanism 202) displayed on the userdisplay 201.

FIG. 5A provides an example arrangement of operations for a method 500 aof performing a search. At block 502, the method 500 a includesreceiving, at a computing device 910 (FIG. 9) of the user device 200,search results 220 transmitted from a search system 300 in communicationwith the computing device 200. The search results 220 include a header242 for an application 204 executable on the computing device 910 andapplication access mechanisms 202 associated with the header 242. Eachapplication access mechanism 202 has a reference to the application 204and indicates one or more performable operations for the application204. At block 504, the method 500 further includes displaying, on adisplay 201, 980 (FIG. 9) in communication with the computing device910, a graphical user interface 240 including the header 242 and userselectable access links 230 grouped with the header 242. Each accesslink 230 is associated with an application access mechanism 202 for theapplication 204.

FIG. 5B provides an example arrangement of operations for a method 500 bof performing a search. At block 512, the method 500 includes receiving,at a computing device 910 (FIG. 9) of the user device 200, searchresults 220 transmitted from a search system 300 in communication withthe computing device 200. The search results 220 include a header 242for an application 204 executable on the computing device 910 andapplication access mechanisms 202 associated with the header 242. Eachapplication access mechanism 202 has a reference to the application 204and indicates one or more performable operations for the application204. At block 514, the method 500 further includes displaying, on adisplay 201, 980 (FIG. 9) in communication with the computing device910, a graphical user interface 240 including the header 242, anexpansion element 370 associated with the header 242, and userselectable access links 230 grouped with the header 242. Each accesslink 230 is associated with an application access mechanism 202 for theapplication 204. The expansion element 250 has a collapsed state 250 aand an expanded state 250 b (see FIG. 8F). At block 516, when theexpansion element 250 is in the expanded state, the method 500 bincludes displaying on the display 201 all of the user selectable accesslinks 230 grouped with the header 242. However, at block 518, when theexpansion element 250 is in the expanded state 250 b, the method 500 bincludes displaying on the display 201 a threshold number of the userselectable access links 230 grouped with the header 242, the thresholdnumber being less than a total number of the user selectable accesslinks 230 grouped with the header 242. The threshold number may begreater than zero.

In some implementations, the search results 220 include an advertisement271 associated with a header 242. The GUI 240 displays the advertisement271 in the header 242 or associated with a user selectable access link230 grouped with the header 242. In other examples, the search results230 include an advertisement record 370 including one or more of anadvertisement name 372, an advertisement identification 372, a sponsoredlink name 374, a sponsored link identification 374, advertising content376, or advertisement parameters 378. In some examples, the method 700Bincludes displaying in the GUI 240 the expansion element 250 in theheader 242.

In other examples, the method 500 b includes displaying in the GUI 240the expansion element 250 among the user selectable access links 230grouped with the header 242. In response to receiving a user selectionof the expansion element indicating the expanded state, the method 500 bmay include displaying on the display 201 a list of all of the userselectable access links 230 grouped with the header 242 and displayingon the display 201 the expansion element 250 as a last element in thelist 230. Additionally or alternatively, in response to receiving a userselection of the expansion element 250 indicating the collapsed state250 a, the method 500 b may include displaying on the display 201 a listof all of the threshold number of the user selectable access links 230grouped with the header 242 and displaying on the display 201 theexpansion element as a last element in the list 230.

Referring to FIGS. 5A and 5B, in some implementations, the header 242includes a name of the associated application 204. The method 500 mayinclude displaying in the graphical user interface 240 a header link 244in the header 242 indicating an installation state of the associatedapplication 204 as being installed or uninstalled. Moreover, in responseto receiving a user selection of the header link 244, when theinstallation state of the associated application 204 is installed, themethod 500 may include executing the application 204 on the computingdevice 910; and when the installation state of the associatedapplication 204 is uninstalled, the method 500 may include downloadingthe application 204 to non-transitory memory 920 (FIG. 9) incommunication with the computing device 910 and executing theapplication 204 on the computing device 910. In some examples, themethod 500 includes directing the user device 200 to a digitaldistribution platform 130 b to download the application 204. Once incommunication with the digital distribution platform 130 b, the user 10may choose to install the application 204 on the user device 200.

In some implementations, the method 500 includes displaying in thegraphical user interface 240 (see FIG. 2) an ungrouped access link 230having an associated application access mechanism 202 for an application204 different from the application 204 associated with the header 242.The method 500 may include displaying in the graphical user interface240 an indicator 244, 244 a, 244 b in the ungrouped access link 230indicating an installation state of the associated application 204 asbeing installed or uninstalled. Moreover, in response to receiving auser selection of an ungrouped access link 230, when the installationstate of the associated application 204 is installed, the method 500 mayinclude executing the application 204 on the computing device 910; andwhen the installation state of the associated application 204 isuninstalled, the method 500 may include downloading the application 204to non-transitory memory 920 in communication with the computing device910 and executing the application 204 on the computing device 910. Insome implementations, when the installation state of the associatedapplication 204 is uninstalled, the method 500 includes directing theuser device 200 to a digital distribution platform 130 b, where the user10 may choose to install the application 204 on the user device 200. Insome examples, in response to receiving a user selection of an ungroupedaccess link 230, when the installation state of the associatedapplication 204 is uninstalled, the method 500 includes executing a webbrowser on the computing device 910 and accessing functionality of theassociated application 204 through the web browser.

The method 500 may include displaying the access links 230 in an orderunder the header 242 based on a score 226 associated with theapplication access mechanism 202 of each access link 230. In someexamples, the method 500 includes receiving, at the computing device910, search criteria (i.e., search query 212) through the graphical userinterface 240, generating, at the computing device 910, a query wrapper210 including the search criteria 212, and transmitting the querywrapper 210 from the computing device 910 to the search system 300.

Referring to FIG. 5C provides an arrangement of operations for a method500 c of performing a search. A block 520, the method 500 c includesreceiving at a computing device 910, search criteria (i.e., search query212) from a user device 200 in communication with the computing device910. At block 522 the method includes executing, using the computingdevice 910, a search of a data store 320 in communication with thecomputing device 910 using the search criteria (i.e., search query 212).At block 524, the method 500 c includes receiving, at the computingdevice 910, function records 330 from the data store 320 in response tothe executed search. Each of the function records 330 includes anapplication identifier 336, an application access mechanism 202, 202 a,202 b, 202, and application state information 334. The applicationaccess mechanism 202, 202 a, 202 b, 202 has a reference to a nativeapplication 204 a and indicates one or more performable operations forthe native application 204 a. The application state information 334describes a state of the native application 204 a when the nativeapplication 204 a performs the one or more operations indicated in theapplication access mechanism 202, 202 a, 202 b, 202. At block 526, themethod 500 c includes grouping the function records 330, at thecomputing device 910, based on the application identifiers 336. Inaddition, at block 528, the method includes transmitting header searchresults 244 from the computing device 910 to the user device 200 fordisplay on the user device 200 (e.g., a display 201). The header searchresults 244 include a header 242 for each group of function records 330and an expansion element 250 associated with each header 242.

In some implementations, the method 500 c also includes receiving, atthe computing device, an expansion command from the user device 200. Theexpansion command indicative of a user selection of an expansion element250. The method 500 c also includes transmitting access mechanism searchresults 202, 202 a, 202 b, 202 from the computing device to the userdevice 200. The access mechanism search results include the applicationaccess mechanisms 202, 202 a, 202 b, 202 of the group of functionrecords 330 is associated with the header 242 of the selected expansionelement 250. The access mechanism search results include link data 232for each application access mechanism 202, 202 a, 202 b, 202. The linkdata 232 includes at least one of text or an image associated with thestate of the application referenced by the corresponding applicationaccess mechanism 202, 202 a, 202 b, 202.

In some examples, the method 500 c further includes filtering thefunction records 330, at the computing device, based on theirapplication identifiers 336 by limiting a number of function records 330per application identifier 336. Additionally, the method 500 c includesscoring the function records 330 based on a relevancy of the functionrecord 330 to the search criteria, and ordering the function records 330based on their scores 226. The scoring is based on the application stateinformation 334 of the function record 330. In some examples, executingthe search includes identifying function records 330 of the data store320 based on matches between terms of the search criteria and terms ofthe application state information 334 of the function records 330.

In some example, at least one of the application access mechanisms 202,202 a, 202 b, 202 includes an application resource identifierreferencing a native application 204 a, wherein the application resourceidentifier is in an application-specific format specific for thereferenced native application 204 a and indicates one or moreperformable operations for the user device 200. The application resourceidentifier includes a domain name and a path to be used by thereferenced native application 204 a to retrieve and display information.The application access mechanism 202, 202 a, 202 b, 202 includesinstructions for at least one of a search application, an operatingsystem, or the referenced native application 204 a when executed on userdevice 200. In some implementations, at least one of the applicationaccess mechanisms 202, 202 a, 202 b, 202 includes a web address thatwhen executed by the user device 200 causes the user device 200 toexecute a web browser and access a web version of the native application204 a referenced in the application access mechanism 202, 202 a, 202 b,202.

FIG. 6A provides an example arrangement of operations for a method 600 aof performing a search. The method 600 a is described with respect tothe user device 200, the search system 300, and the search module 310 asillustrated in FIG. 2. In block 602, the search module 310 receives thequery wrapper 210. In block 604, the search module 310 analyzes data(e.g., the search query 212) included in the query wrapper 210. Forexample, the query analysis module 400 analyzes the search query 212(and/or other data) of the query wrapper 210.

In some examples, the search module 310 may determine the geo-locationof the user device 200 in terms of latitude and longitude values thatindicate the latitude and longitude of the user device 200.Additionally, or alternatively, the search module 310 may determine thegeo-location of the user device 200 in terms of an address, such as apostal address (e.g., a street address, zip code, and/or city name). Thegeo-location of the user device 200 determined by the search module 310may be a point location (e.g., a latitude/longitude or a postaladdress). The user device 200 may generate geo-location data 218 (e.g.,latitude and longitude) and the query wrapper 210 including thegeo-location data 218. In some examples, the search module 310determines the geo-location of the user device 200 based on data (e.g.,an IP address 228) included in the query wrapper 210. For example, thesearch module 310 may look up the location of the user device 200 usingthe IP address 228. The search module 310 may communicate with a remoteserver 110 that can provide geo-location data for the user device 200based on the IP address 228.

At block 606, the method 600 a includes executing a search, for example,by identifying and selecting function records 330 based on the data ofthe query wrapper 210 (e.g., the search query 212). At block 608, themethod 600 a includes generating the search results 220. The searchsystem 300 (e.g., in particular, the search module 310) may generate thesearch results 220 based on a scoring of considered function records330. The set processing module 404 generates search results 226including a list of the selected or all application access mechanisms202 from selected function records 330 or all the function records 330.

Finally, at block 610, the method 600 a includes transmitting the searchresults 220 to the user device 200. The search module 310 may deliverthe search results 220, which can include access mechanisms 202, resultsscores 226, and/or link data 232. For example, the set processing module404 transmits the search results 226 to the user device 200 thatgenerated the search query 212.

FIG. 6B provides an example arrangement of operations for a method 600 bof executing the search (e.g., at block 606). The method 600 b isdescribed with respect to the user device 200, the search module 310,and the data store 320 as illustrated in FIG. 2.

At block 612, the method 600 b includes identifying function records 330based on a search query 212. The search module 310 identifies functionrecords 330 in the search data store 320 based on the search query 212received in the query wrapper 210. For example, the search module 310may identify function records 330 in the data store 320 by detectingsearch term matches between terms (e.g., words) of the search query 212and terms included in the application state information 334 of thefunction records 330. In some examples, the set generation module 402identifies a consideration set 350 of function records 330 based on thesearch query 212 (e.g., based on output from the query analysis module400).

At block 614, the method 600 b includes selecting a consideration set350 of function records 330. The search module 310 selects a set 350 offunction records 330 from those function records 330 identified at block612. The selected set 350 of function records 330 may be referred to asa “consideration set” of function records 330 and/or functionidentifiers 332 of those function records 330. The search module 310 mayscore the consideration set 350 of function records 330 and includeinformation from the consideration set 350 of function records 330 inthe search results 220. The search module 310 may filter theconsideration set 350 of function records 330 based on one or morecriteria.

At block 616, the method 600 b includes scoring the consideration set350 of function records 330. For example, the search module 310 (e.g.,the set processing module 404) may generate a score (e.g., a resultscore 226) for each of the function records 330 that indicates therelevance of the function record 330 to the search query 212. At block618, the method 600 b includes grouping function records 330 of theconsideration set 350. For example, the set processing module 404 maygroup the function records 330 by application ID 336, access mechanism202, application state information 334, result score 226, or some otherattribute associated with the function record 330. By grouping thefunction records 330 by application ID 336, the search application 216can display the search results 220 in an organized or ordered fashion.

At block 619, the method 600 b determines if a function records filteris set, and if so, at block 620, the method 600 b includes filteringfunction records 330 of the consideration set 350. In someimplementations, the set processing module 404 filters the functionrecords 330 based on one or more criteria. The criteria may be based oncharacteristics of the function records 330 and/or characteristicsassociated with the user 10. Moreover, the set processing module 404 mayimpose a policy that limits or reduces the number of function records330 in the consideration set 350 and/or the result set 220. For example,the set processing module 404 may filter the function records 330 basedon application ID 336 and impose a policy that limits or reduces thenumber of function records 330 to a maximum number of function records330 per each application ID 332.

Referring back to block 619 if a function records filter is not set, orafter filtering out function records at block 20, then at block 622 a,the method 600 b includes selecting one or more access mechanisms 202,link data 232, header data 242, and optionally an expansion element 250associated with function records 330 in the consideration set 350 fortransmission in the search results 220. In some examples, the header 242is a name or nickname of an application 204 having a grouping offunction records 330 in the search results 220. The search module 310may select access mechanisms 202 from the function records 330associated with the largest result scores 226 determined at block 616.In some implementations, the search module 310 determines which accessmechanisms 202 are compatible with the user device 200 based on theplatform data 222. In these implementations, the search module 310 maytransmit a subset of the access mechanisms 202 from the selectedfunction records 330 which are compatible with the user device 200(e.g., based on OS version, web browser version, and/or device type).The set processing module 404 may select function records 330 from theconsideration set 350 based on the result scores 226 associated with thefunction records 330 and select access mechanisms 202 from the selectedfunction records 330. For example, the set processing module 404 mayselect function records 330 having the highest result scores 226 andthen select access mechanisms 202 from those function records 330.

Finally, at block 624, the method 600 b includes transmitting the searchresults 220 to the user device 200. The search module 310 may deliverthe search results 220, which can include access mechanisms 202, resultsscores 226, and/or link data 232. For example, the set processing module404 transmits the search results 226 to the user device 200 thatgenerated the search query 212.

FIG. 6C provides an example arrangement of operations for a method 600 cof executing the search (e.g., at block 606). The method 600 c isdescribed with respect to the user device 200, the search module 310,and the data store 320 as illustrated in FIG. 2. The method 600 cincludes the same elements 612-618 of the method 600 b in FIG. 6B.However, in this example, at block 620, the method 600 c includesfiltering function records 330 of the consideration set 350, similar toblock 620 in FIG. 6B. At block 622 b, the method 600 c includesselecting one or more access mechanisms 202, link data 232, header data242, and an expansion element 250 associated with function records 330in the consideration set 350 for transmission in the search results 220.

At block 624 b, the method 600 c includes transmitting to the userdevice 200, a predetermined number of search results 220. For example,the threshold number of search results may be any number greater orequal to zero. The user 10 may request additional search results 220 byselecting the expansion element 350 on the display 201 of the userdevice 200.

At bock 626, the method 600 c includes waiting for receipt of anadditional search result 220 request from the user device 200 by way ofthe user 10 selecting the expansion element 370 displayed on the display201 in association with a header 242. For example, the search module 310ways for receipt of the user additional requests from the user device200.

At block 628, the method 600 c includes selecting one or more accessmechanisms 202 and link data 232, associated with function records 330in the consideration set 350 for transmission in the search results 220that were not previously transmitted at block 624. The search module 310may select access mechanisms 202 from the function records 330associated with the largest result scores 226 determined at block 616.In some implementations, the search module 310 determines which accessmechanisms 202 are compatible with the user device 200 based on theplatform data 222. In these implementations, the search module 310 maytransmit a subset of the access mechanisms 202 from the selectedfunction records 330 that are compatible with the user device 200 (e.g.,based on OS version, web browser version, and/or device type). The setprocessing module 404 may select function records 330 from theconsideration set 350 based on the result scores 226 associated with thefunction records 330 and select access mechanisms 202 from the selectedfunction records 330. For example, the set processing module 404 mayselect function records 330 having the highest result scores 226 andthen select access mechanisms 202 from those function records 330.

Finally, at block 630, the method 600 c includes transmitting the searchresults 220 not previously transmitted at block 624 to the user device200. The search module 310 may deliver the search results 220, which caninclude access mechanisms 202, results scores 226, and/or link data 232.For example, the set processing module 404 transmits the search results226 to the user device 200 that generated the search query 212.

FIGS. 7A-7D provide example arrangements of operations for a method 700of operating a user device 200. It may be assumed that the user device200 described according to the method 700 includes a search application216 (e.g., a native application 204 a or web-browser application 204 b)configured to communicate with the search system 300.

At block 702, the method 700 includes receiving a search query 212 froma user 10. In some implementations, the search application 216 executingon the user device 200 receives the search query 212 from of the user10. At block 704, the method includes generating and transmitting querywrapper 210 to the search system 300. In some implementations, the userdevice 200 generates and transmits the query wrapper 210 to the searchsystem 300. At block 706, the method 700 includes waiting for receipt ofthe search results 220. For example, the user device 200 waits forreceipt of the search results 220 from the search system 300. The searchresults 220 may include a list of access mechanisms 202 and optionallyresult scores 226 associated with the access mechanisms 202.Additionally, the search results 220 may optionally include link data232 (e.g., text and/or images) for the access mechanisms 202. The searchapplication 216 may generate user selectable links 230 in the GUI 240based on the received link data 232.

At block 708 a, the method 700 includes generating user selectable links230 and a header 242 (e.g., for a group of links 230) based on thesearch results 220. The search application 216 may generate the userselectable links 230 and the header 242 or receive them from the searchmodule 310. In some implementations, the method 700 includes, at block708 b, generating one or more header links 244 associated with theheader 242. The header links 244 may be indicators or icons thatindicate an installation state of a corresponding native application 204a (FIG. 8D). For example, a first indicator 244 a may indicate that thenative application is installed and selecting the first indicator 244 amay open the native application 204 a. A second indicator 244 b mayindicate that the native application 204 a is not currently installed.In some implementations, selecting the second indicator 244 b causesinstallation of the native application 204 a (e.g., via an applicationdownload mechanism 202 c). In other implementations, selecting thesecond indicator 244 b causes the user device 200 to be directed to thedigital distribution platform 130 b, where the user 10 may choose toinstall the application 204 on the user device 200. In yet anotherexample, at block 708 c, the method 700 includes generating expansionelement 250 in addition to user selectable links 230 and a header 242,based on the search results 220.

At block 710, the method 700 includes waiting for a user selection of alink 230, 244. For example, the search application 216 may wait for theuser 10 to select one of the user selectable links 230 or the headerlinks 244 before operation proceeds to a subsequent block 712, 714. InFIG. 7A, when the user 10 selects (e.g., touches) one of the userselectable links 230, the method 700 includes launching an application204 associated with the link 230. For example, in response to selectionof a link 230 including an access mechanism 202, the user device 200launches the application 204 referenced in the access mechanism 202 andperforms one or more operations indicated in the access mechanism 202 inblock 712. In FIG. 7B, if the user 10 selects a link 230, 244, themethod 700 includes, at block 712, determining if the selected link is aheader link 244, and if so, at block 716, performing operationsaccording the selected header link 244 (e.g., opening an application toa default or particular state, being directed to a digital distributionplatform 130 b, and/or installing a corresponding native application 204a). Otherwise, the method 700 includes, at block 718, performingoperations according the selected link 230, which may include launchingan application 204 associated with the link 230 using an accessmechanism 202 of that link 230.

Referring to FIGS. 7C and 7D, at block 720, the method 700 includesreceiving a user selection of the expansion element 250 by way of a user10 selecting the expansion element 250 on the user display 201. In someexamples, at block 722 a, the method 700 includes increasing the numberof user selectable links 230 displayed on the display 201 of the userdevice 200. In other examples, at block 722 b, the method 700 includesincreasing the number of user selectable links 230 and the number ofdisplayed advertisement(s) 271 associated with each header 242.

At block 724, the method 700 includes waiting for a user selection ofthe expanded state 250 b of the expansion element 250. For example, thesearch application 216 may wait for the user 10 to select the expandedstate 250 b of the expansion element 250, since the user 10 haspreviously selected the collapsed state 250 a of the expansion element250. At block 726, the method 700 includes reducing the number of userselectable links 230. For example, the search application 216 receives auser selection of the expanded state 250 b and reduces the number ofuser selectable links 230 displayed in the search results 220. In someexamples, when the search results 220 include advertisements 271, themethod 700 may reduce the number of advertisements 271 when reducing thenumber of user selectable links 220. The method 700 may only display theadvertisements 271 when the expansion element 250 is in an expandedstate 250 a.

FIGS. 8A-8L illustrate various examples of executing a search on a userdevice 200 using the search application 216 and displaying searchresults 220. Referring to FIGS. 2 and 8A, when the user 10 enters asearch query 212 into the search field 214 (e.g., a search text box) ofthe GUI 240 of the search application 216 running on the user device 200and executes the search, the search application 216 generates a querywrapper 210 that contains the search query 212 and any other relevantinformation (e.g., query parameters). The search application 216transmits the query wrapper 210 to the search system 300 (e.g., to thesearch module 310), which responds with the search results 220. Thesearch application 216 displays the search results 220 in the GUI 240.The search results 220 can indicate one or more links 230 to accessresources that are relevant to the search. The links 230 can includeapplication resource identifiers that can be used to launch a thirdparty application 204 and access a specific state within the third partyapplication 204.

FIGS. 2, 8A and 8B illustrate an example of executing a search on a userdevice 200 using the search application 216 executing on the user device200. In FIG. 8A, the user 10 entered a search query 212 of “Toy Story”into the search field 214 (e.g., a search box) of the GUI 240 of thesearch application 216. In response to the search query 212, the searchapplication 216 generates a query wrapper 210 including the search query212 and transmits the query wrapper 210 to the search system 300, whichreturns search results 220 based on the search query 212.

The search module 310 transmits the search results 220 including a listof applications 204 and/or access mechanisms 202 to the user device 200.The list of applications 204 (e.g., native or web applications 204 a,204 b) illustrated in FIG. 8A includes IMDb® (a trademark of IMDb.com,Inc.), FANDANGO® (a trademark of Fandango), CRACKLE®, (a trademark ofCrackle, Inc.), FLIXSTER® (a trademark of Warner Bros. EntertainmentGroup), and ROTTEN TOMATOES® (a trademark of Warner Bros. EntertainmentGroup). The search application 216 displays links 230 to relevant statesof the applications 204 indicated in the search results 220. The user 10may select (e.g., touch or click) one of the links 230 to access theresource indicated in the link 230. For example, the user 10 may selectthe area of the GUI 240 including the “IMDb” icon to select a first link230-1 to the “IMDb” application. In response to such a user selection,the user device 200 (e.g., search application 216, operating system 224,and/or the IMDb native application 204) can launch the selectedapplication 204 and access the state of the application 204 indicated inthe link 230. In the example of FIG. 7A, each link 230-1, 230-2, 230-3,230-4, 230-5 may provide access to a “Toy Story” entry in the respectiveapplication 204.

In the example of FIG. 8A, the user selects the first link 230-1 for“IMDb.” In the case of the IMDb native application, the various statesof the native application may correspond to different entries in theIMDb databases. The illustrated first link 230-1 may indicate a statecorresponding to an entry “Toy Story.” Accordingly, selection of thefirst link 230-1 may cause the search application 216 to instruct theoperating system 216 of the user device 200 to launch the IMDb nativeapplication and to access the “Toy Story” entry referenced in the firstlink 230-1. FIG. 8B illustrates a GUI 240 of the selected nativeapplication 204 a that was launched in response to the selection of thefirst link 230-1, where the selected native application 204 a displaysan example entry for “Toy Story.”

Referring to FIG. 8C, in some implementations, the user device 200 hasone or more native applications 204 a installed on the user device 200.In the example shown, the search application 216 indicates on the GUI240 that the YELP® native application developed by Yelp, Inc. and theTRIPADVISOR® native application developed by TripAdvisor, Inc. areinstalled on the user device 200. The search application 216 may displaya header 242 and one or more links 230 associated with the header 242.In some examples, the search application 216 displays one or moreheaders 242 and one or more links 230 below each header 242 in ahierarchical fashion (e.g., a tree structure). Each header 242 may be aparent node for one or more links 230 as children nodes of the parentnode. The links 230 may be selected and grouped in a particular order orin random order. If the links 230 are displayed in an order, the ordermay be based on some metric associated with the access mechanism 202 orthe native application 204 a associated with the link 230. Moreover, theorder may be an alphabetical sorting of names associated with the links230, based on the results scores 226 (e.g., based on relevancy to thesearch query 212), a combination thereof, and/or other sortingtechniques. The header 242 may or may not include a link 230 itself.

In the example shown, the GUI 240 includes a header 242 having the name“Yelp,” under which first, second, and third links 230-1, 230-2, 230-3are arranged. The header 242 may indicate that the links 230-1, 230-2,230-3 arranged below the header 242 are associated with the YELP® nativeapplication 204 a. In this example, the header 242 does not include anylinks 230 in the header 242 itself. Instead, the links 230 are groupedbelow the header 242. In other examples, however, the header 242 mayinclude one or more links 230. In the example shown, selection of thefirst link 230-1 may cause the user device 200 to launch the YELP®native application 204 a and retrieve an IHOP® restaurant entry of theYELP® native application 204 a. Selection of the second link 230-2 maycause the user device 200 to launch the YELP® native application 204 aand retrieve a DENNY'S® restaurant entry of the YELP® native application204 a. Selection of the third link 230-3 may cause the user device 200to launch the TACO BELL® native application 204 a and retrieve a TACOBELL® restaurant entry of the YELP® native application 204 a.

In some examples, the search application 216 displays one or more links230 to native applications 204 a without a header 242, such as theexample shown in FIG. 8A. In the example shown in FIG. 8C, a fourth link230-4 references the TRIPADVISOR® native application without a header242. Selection of the fourth link 230-4 may cause the user device 200 tolaunch the TRIPADVISOR® native application 204 a and retrieve an entryfor “Late night diners” in the TRIPADVISOR® native application 204 a(e.g., a search for “Late night diners”).

Additionally, in the example shown, a fifth link 230-5 includes a webaccess mechanism 202 b (e.g., a URL). Selection of the fifth link 230-5may cause the user device 200 to launch the web-browser application 204b and retrieve an entry for “Late night diners” in the OPENTABLE® webapplication 204 b developed by OpenTable, Inc.

In FIG. 8D, the user entered a search query 212 of “thai” into thesearch field 214 of the GUI 240 and executed the search by, for example,selecting a search button 215 of the GUI 240. In response to the searchquery 212, the search application 216 generates a query wrapper 210including the search query 212 and transmits the query wrapper 210 tothe search module 310. The search module 310 generates search results220. In the example of FIG. 8D, the search module 310 generated requestsfor information (e.g., web requests) from data sources 130 based on thesearch query 212. The search module 310 may have included one or more ofthe query terms and/or the query parameters contained in the querywrapper 210 in the requests for information. The search module 310generated links 230 based on the information received from the datasources 130. In the example of FIG. 8D, the search module 310 receivedinformation (e.g., available reservation times) relating to the entities“Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and“Blackwood” that are associated with the OPENTABLE® application.

As described above, in response the received query wrapper 210, thesearch module 310 generates search results 220 (e.g., based on theinformation received from the data sources 130) and transmits searchresults 220 including a list of applications 204 to the user device 200.The search module 310 may also transmit the information regarding theentities associated with the YELP® application 204 a and the OPENTABLE®application 204 a (e.g., reservation times). The list of applications204 illustrated in FIG. 8D includes YELP® and OPENTABLE®. The GUI 240may include links 230 to the applications 204 in the search results 220.The user 10 may select the links 230 to access the resource indicated inthe link 230. For example, the user may select “Bangkok Bistro” toselect a link 230 to the “Bangkok Bistro” entry in the YELP® application204 a.

The GUI 240 in FIG. 8D includes first, second, and third links 230-1,230-2, 230-3 that provide access to entries in the YELP® application 204a having a YELP® header 242 a. Therefore, the YELP® header 242 aindicates that the first, second, and third links 230-1,230-2, 230-3arranged below the header 242 a are associated with the YELP® nativeapplication 204 a. Similarly the OPENTABLE® header 242 b indicates thatfourth, fifth, and sixth links 230-4, 230-5, 230-6 arranged below theheader 242 b are associated with the OPEN TABLE® native application 204a. For example, the links 230-1, 230-2, 230-3 may provide access toentries for “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant”in the YELP® application. The search module 310 may have identified theentries for “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant”in response to receiving the search query 212 of “thai.” The entities“Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” may beassociated with the YELP® application 204 a. Accordingly, the searchapplication 216 may group those entities together under the YELP®application search result 220.

The GUI 240 in FIG. 8D includes fourth, fifth, and sixth links 230-4,230-5, 230-6 that provide access to entries in the OPENTABLE®application 204 a. For example, the links 230-4, 230-5, 230-6 mayprovide access to entries for “Baan Thai House & Wine Bar,” “BasilCanteen @ 11th Street,” and “Blackwood” in the OPENTABLE® application204 a. The search module 310 may have identified the entries for “BaanThai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood”in response to receiving the search query “thai.” The entities “BaanThai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood”may be associated with the OPENTABLE® application 204 a. Accordingly,the search application 216 may group those entities together under theOPENTABLE® application search result 220.

The links for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11thStreet,” and “Blackwood” also include information relating to availablereservation times. The information relating to available reservationtimes may have been received by the search module 310 in response to arequest for information by the search module 310 to a data source 130for the OPENTABLE® application 204 a. The search module 310 may havetransmitted the received information to the user device 200 so that theinformation could be displayed by the search application 216 via the GUI240.

The GUI 240 of FIG. 8D also includes indicators or icons 244 thatindicate whether the native applications 204 a for YELP® and OPENTABLE®are currently installed on the user device 200. The indicators or icons244 may indicate that whether the native application 204 a is installedand ready for access by the user 10, or whether the native application204 a is not yet installed, thus inaccessible by the user 10, but can bedownloaded to the user device 200. For example, an “Open” icon 244 a mayindicate that a native application 204 a is installed on the user device200, and the user may select (e.g., touch) an “Open” icon 244 a to openthe installed native application 204 a. Displaying the icon 244 aindicating the installation status of the native application 204 a inthe header 242 is not required for the header 242 to act as a link. Insome examples, the header 242 may act as a link that opens the nativeapplication 204 a even though the header 242 does not include anyindicator 244. Moreover, selecting the header 242 can cause more thanjust opening an application 204. In some examples, the header 242 may bea link to a different state of the corresponding application 204 (e.g.,different from the default state). Also, selecting the header 242 maycause the native application 204 a (i.e., the one identified in theheader 242) to perform a search using one or more terms of the originalsearch query 212.

A “Free” icon 244 b may indicate that the native application 204 a isnot currently installed on the user device 200; however, the user mayselect the “Free” icon 244 b to launch a digital distribution platform130 b, such as an application marketplace, that provides the nativeapplication 204 a for download or to automatically start downloading thenative application 204 a to the user device 200. Other indicators oricons 244 are possible as well that show various states of installationand/or accessibility of native applications 204 a.

The search application 216 may display links 230 having different typesof access mechanisms 202. For example, selecting the first link 230-1may access an entry of the native application 204 a for YELP® for“Bangkok Bistro” using an application access mechanism 202 a. Selectingthe fourth link 230-4 may access an entry of the web application 204 bfor OPENTABLE® for “Baan Thai House & Wine Bar” using a web accessmechanism 202 b. In this example, the native application 204 a forOPENTABLE® is not installed on the user device 200. Thus, the searchapplication 216 can instruct a web browser of the user device 200 toaccess the web application 204 b for OPENTABLE® at the state indicate bythe fourth link 230-4.

FIG. 8E illustrates an example GUI 240 of a search application 216running on a user device 200. In the example shown, the user 10 hasentered a search query 212 (“Late night diners”) into the GUI 240 of thesearch application 216. The user 10 interacted with the GUI 240, causingthe search application 216 to generate and transmit a query wrapper 210including the search query 212 to the search system 300. The searchsystem 300 identified function records 330 and selected applicationaccess mechanisms 202 a, web access mechanisms 202 b, and applicationdownload mechanism 202 c from the identified function records 330, asdescribed above. In the example shown, the search system 300 identifiedfunction records 330 including references to native applications 204 afor YELP®, TRIPADVISOR®, OPENTABLE®, and URBANSPOON®. The user device200 has the native applications 204 a for YELP® and TRIPADVISOR®installed, but the native applications 204 a for OPENTABLE® andURBANSPOON® are not installed on the user device 200. Links 230, such asthe first, second, third, and fourth links 230-1, 230-2, 230-3, 230-4shown, for accessing the applications 204 (e.g., via access mechanisms202) may have different functionality and/or purpose. For example, thefirst and second links 230-1, 230-2 for entries in the nativeapplication 204 a for YELP® for “IHOP” and “Denny's” include applicationaccess mechanisms 202 a that open the YELP® native application 204 a andretrieve the corresponding entries for “IHOP” and “Denny's.”

The third link 230-3 may be associated with an application accessmechanism 202 a for the TRIPADVISOR® native application 204 a. Forexample, the application access mechanism 202 a included in the thirdlink 230-3 may cause the user device 200 to launch the TRIPADVISOR®native application 204 a to a default state.

The fourth link 230-4 may include a web access mechanism 202 b for theOPENTABLE® web application 204 b. For example, the web access mechanism202 b may direct a web browser of the user device 200 to one or morelate night diners on a website of OPENTABLE®. Accordingly, in responseto selection of the fourth link 230-4, the user device 200 may launch aweb browser and retrieve information at a web address included in theweb access mechanism 202 b. Since the OPENTABLE® native application 204a is not installed on the user device 200, the search application 216may present the fourth link 230-4 to allow the user 10 to access thedesired functionality via the web access mechanism 202 b.

A fifth link 230-5 may include an application download mechanism 202 cfor the URBANSPOON® native application 204 a. Since the user device 200does not have the URBANSPOON® native application 204 a installed, theuser device 200 displays the fifth link 230-5 that includes theapplication download mechanism 202 c for the URBANSPOON® nativeapplication 204 a. In response to selection of the fifth link 230-5, theuser device 200 may access a data source 130 (e.g., a digitaldistribution platform 130 b) for downloading the URBANSPOON® nativeapplication 204 a. In some implementations, the search application 216optionally displays an icon 244 (or other identifier, such as textand/or an image) that indicates that the application 204 is notcurrently installed on the user device 200, but can be downloaded. Inthe example shown, the search application displays a “Download” icon 244c on the GUI 240 adjacent the fifth link 230-5 for the URBANSPOON®native application 204 a. When the user 10 selects the download icon 244c, the search application 216 uses the application download mechanism202 c of the corresponding link 230 to download the native application204 a to the user device 200.

In some implementations, if the YELP® native application 204 a was notinstalled on the user device 200, the search application 216 may stilldisplay the entries for “IHOP” and “Denny's” on the GUI 240, but theuser device 200 may include application download mechanisms 202 c in thelinks 230-1, 230-2, so that the user device 200 would be directed todownloading the YELP® native application 204 a. In such an example, thelinks 230-1, 230-2 may also include data (e.g., text and/or images) thatindicate to the user 10 that selection of the links 230-1, 230-2 willdirect the user 10 to a site for downloading the YELP® nativeapplication 204 a. For example, the links 230-1, 230-2 may include adownload icon 244 c, and when the user 10 selects the download icon 244c, the search application 216 uses the application download mechanism202 c of the corresponding link 230 to download the native application204 a to the user device 200.

Referring to FIGS. 8F-8K, in some implementations, the header 242includes an expansion element 250 that allows the search application 216to display all or some of the links 230 associates with the header 242.The expansion element 250 includes a collapsed state 250 a (FIGS. 8F and8H) and an expanded state 250 b (FIGS. 8G and 8I) that are mutuallyexclusive. In the example shown, the search application 216 indicates onthe GUI 240 that the YELP® native application developed by Yelp, Inc.and the TRIPADVISOR® native application developed by TripAdvisor, Inc.are installed on the user device 200. The search application 216 maydisplay a header 242 and one or more links 230 associated with theheader 242. In some implementations, the search application 216 onlydisplays one or more headers 242 and the expansion element 250associated with each header without displaying any links 230 associatedwith the header 242. In some examples, the search application 216displays one or more headers 242 and one or more links 230 below eachheader 242 in a hierarchical fashion (e.g., a tree structure). Eachheader 242 may be a parent node for one or more links 230 as childrennodes of the parent node. The links 230 may be selected and grouped in aparticular order or in random order. If the links 230 are displayed inan order, the order may be based on some metric associated with theaccess mechanism 202 or the native application 204 a associated with thelink 230. Moreover, the order may be an alphabetical sorting of namesassociated with the links 230, based on the results scores 226 (e.g.,based on relevancy to the search query 212), a combination thereof,and/or other sorting techniques. The header 242 may or may not include alink 230 itself.

A device independent pixel, also known as, density-independent pixel (dpor dip) is a physical unit of measurement based on a co-ordinate systemheld by a computer and represents an abstraction of a pixel for use byan application that an underling system then converts to physical pixel.Device independent pixel allows mobile device software, such as nativeapplications 204 a, to scale the display of information and userinteraction to different screen sizes. Therefore, the abstraction allowsthe native application 204 a to work in pixels as measurement, while theunderlying graphics system converts the abstract pixel measurements ofthe application into real pixel measurements appropriate for theparticular user device 200. Therefore, the GUI 240 can adjusts how theinformation is being displayed on a user device 200 based on the size ofthe display.

In some implementations, the search application 216 restricts thedisplayed search results 220 based on a number of device independentpixels. For the collapsed state 250 a, the GUI 240 may set a maximumsearch result height H_(C) that includes the search results 220associated with a header 242, where each search result or link 230 has acollapsed search result height H_(CR). The collapsed search resultheight H_(CR) may be equal for each displayed access link 230, whichdisplays limited information. For example, the maximum search resultheight H_(C) equals 344 dp and each link 230 has a collapsed searchresult height H_(CR) of 75 dp. The GUI 240 may display four access links230 (4×75 dp=300 dp) that can fit within the maximum search resultheight H_(C). The expanded state 250 b may have an expanded searchresult height H_(E) that includes the search results 220 associated witha header 252. If only two search results 220 are available, then the GUI240 displays only two access links 230 associated with the header 242.The expanded search result height H_(E) includes all of the searchresults 220 (i.e., access links 230); therefore, the expanded searchresult height H_(E) may be as long as the number of access links 230associated with the header 242 (the user 10 may scroll through theaccess links 230 to see the ones that are not displayed on a firstpage). Each access link 230 within the expanded state 240 b may have anexpanded search result height H_(ER) that is equal to or greater thanthe collapsed search result height H_(CR). The GUI 240 may display morecontent and information associated with each link 230. For example, inthe collapsed state 250 a the GUI 240 may display a restaurant title,picture, and ratings, while in the expanded state 250 b the GUI 240 mayadditionally display a phone number and an address or any relevantinformation. Thus, the number of access links 230 displayed in eitherthe collapsed state 250 a or the expanded state 250 b depends on anallocated amount of device independent pixels that the GUI 240 allocatesto the access link 230.

Referring to FIGS. 8F and 8H, in some examples, the GUI 240 includes theexpansion element 250 located within the header 242. Referring to FIGS.8I and 8J, the GUI 240 includes the expansion element 250 displayedamong the user selectable access links 230 grouped with the header 242.

Referring to FIGS. 8H and 8J, in some examples, the user 10 taps theexpansion element 250 on the display 201 when the expansion element 250is in the collapsed state 250 a and the GUI 240 is displaying threelinks 230-1, 230-2, 230-3. The GUI 240 displays an expanded state 250 bof the expansion element 250 as shown in FIGS. 8G and 8I. The expandedstate 250 b includes a number of links 230 greater than the number oflinks 230 displayed in the collapsed state 250 a. For example, when inthe collapsed state 250 a zero links 230 are displayed, then in theexpanded state 250 b, one or more links 230 are displayed. As shown inFIGS. 8G and 8I, six links 230 are displayed when in the expanded state250 b. The user 10 may tap the expansion element 250 on the display whenthe expansion element is in the expanded state 250 b, and the GUI 240displays less user selectable links 230. As shown, the expansion element250 toggles between the collapsed state 250 a and the expanded state 250b, however, the expansion element 250 may include an expansion buttonseparate from a reduction button. In some examples, where the searchapplication 216 groups the links 230 together if the links 230 arerelated to the same application 204, the search application 216 onlydisplays the header 242 associated with the application 204 and a user10 may select the expansion element 250 to view the links 230. In otherexamples, the search application 216 displays a predetermined number oflinks 230 (e.g., three links 230) and when the user 10 selects theexpansion link 250 the remainder of the search results 220 associatedwith the application 204 are displayed.

FIGS. 2, 8J, and 8K, illustrate an example, of executing a search on auser device 200 using the search application 216 executing on the userdevice 200. In FIG. 8J the user 10 entered a search query 212 of “Latenight diner” into the search field 214 (e.g., a search box) of the GUI240 of the search application 216. In response to the search query 212,the search application 216 generates a query wrapper 210 including thesearch query 212 and transmits the query wrapper 210 to the searchsystem 300, which returns search results 220 based on the search query212.

The search module 310 transmits the search results 330 including a listof applications 204 and/or access mechanisms 202 to the user device 200.The list of applications, 204 (native or web applications 204 a, 204)illustrated in FIG. 8J is similar to the list of applications 204illustrated and discussed in FIG. 8C. The user 10 may select (e.g.,touch or click) one of the links 230 to access resources indicated inthe link. For example, the user 10 may select the area of the GUI 240including the “Denny's” icon to select the second link 230-2 of theYELP® native application 204 a. In response to the user selection, theuser device 200 (e.g., search application 216, operating system 224,and/or the YELP® native application 204 a) can launch the selectedapplication 204 a associated with the link 230 and access the state ofthe application 204 indicated in the link 230. In the example, of FIG.8I, the selected link 230-2 may provide access to information relatingto a “Denny's” restaurant. FIG. 8k illustrates a GUI 240 of the selectednative application 204 a that was launched in response to the selectionof the second link 230-2, where the selected native application 204 adisplays information relating to a restaurant.

Modules and data stores included in the search system 300 representfeatures that may be included in the search system 300 of the presentdisclosure. The modules and data stores described herein may be embodiedby electronic hardware, software, firmware, or any combination thereof.Depiction of different features as separate modules and data stores doesnot necessarily imply whether the modules and data stores are embodiedby common or separate electronic hardware or software components. Insome implementations, the features associated with the one or moremodules and data stores depicted herein may be realized by commonelectronic hardware and software components. In some implementations,the features associated with the one or more modules and data storesdepicted herein may be realized by separate electronic hardware andsoftware components.

The modules and data stores may be embodied by electronic hardware andsoftware components including, but not limited to, one or moreprocessing units, one or more memory components, one or moreinput/output (I/O) components, and interconnect components. Interconnectcomponents may be configured to provide communication between the one ormore processing units, the one or more memory components, and the one ormore I/O components. For example, the interconnect components mayinclude one or more buses that are configured to transfer data betweenelectronic components. The interconnect components may also includecontrol circuits (e.g., a memory controller and/or an I/O controller)that are configured to control communication between electroniccomponents.

In some implementations, the search system 300 may be a system of one ormore computing devices (e.g., a computer search system) that areconfigured to implement the techniques described herein. Put anotherway, the features attributed to the modules and data stores describedherein may be implemented by one or more computing devices. Each of theone or more computing devices may include any combination of electronichardware, software, and/or firmware described above. For example, eachof the one or more computing devices may include any combination ofprocessing units, memory components, I/O components, and interconnectcomponents described above. The one or more computing devices of thesearch system 300 may also include various human interface devices,including, but not limited to, display screens, keyboards, pointingdevices (e.g., a mouse), touchscreens, speakers, and microphones. Thecomputing devices may also be configured to communicate with additionaldevices, such as external memory (e.g., external HDDs).

The one or more computing devices of the search system 300 may beconfigured to communicate with the network 120. The one or morecomputing devices of the search system 300 may also be configured tocommunicate with one another (e.g., via a computer network). In someexamples, the one or more computing devices of the search system 300 mayinclude one or more server computing devices configured to communicatewith user devices (e.g., receive query wrappers and transmit searchresults), gather data from data sources 130, index data, store the data,and store other documents. The one or more computing devices may residewithin a single machine at a single geographic location in someexamples. In other examples, the one or more computing devices mayreside within multiple machines at a single geographic location. Instill other examples, the one or more computing devices of the searchsystem 300 may be distributed across a number of geographic locations.

FIG. 9 is schematic view of an example computing device 900 that may beused to implement the systems and methods described in this document.The computing device 900 is intended to represent various forms ofdigital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, and otherappropriate computers. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

The computing device 900 includes a processor 910, memory 920, a storagedevice 930, a high-speed interface/controller 940 connecting to thememory 920 and high-speed expansion ports 950, and a low speedinterface/controller 960 connecting to low speed bus 970 and storagedevice 930. Each of the components 910, 920, 930, 940, 950, and 960, areinterconnected using various busses, and may be mounted on a commonmotherboard or in other manners as appropriate. The processor 910 canprocess instructions for execution within the computing device 900,including instructions stored in the memory 920 or on the storage device930 to display graphical information for a graphical user interface(GUI) on an external input/output device, such as display 980 coupled tohigh speed interface 940. In other implementations, multiple processorsand/or multiple buses may be used, as appropriate, along with multiplememories and types of memory. Also, multiple computing devices 900 maybe connected, with each device providing portions of the necessaryoperations (e.g., as a server bank, a group of blade servers, or amulti-processor system).

The memory 920 stores information non-transitorily within the computingdevice 900. The memory 920 may be a computer-readable medium, a volatilememory unit(s), or non-volatile memory unit(s). The non-transitorymemory 920 may be physical devices used to store programs (e.g.,sequences of instructions) or data (e.g., program state information) ona temporary or permanent basis for use by the computing device 900.Examples of non-volatile memory include, but are not limited to, flashmemory and read-only memory (ROM)/programmable read-only memory(PROM)/erasable programmable read-only memory (EPROM)/electronicallyerasable programmable read-only memory (EEPROM) (e.g., typically usedfor firmware, such as boot programs). Examples of volatile memoryinclude, but are not limited to, random access memory (RAM), dynamicrandom access memory (DRAM), static random access memory (SRAM), phasechange memory (PCM) as well as disks or tapes.

The storage device 930 is capable of providing mass storage for thecomputing device 900. In some implementations, the storage device 930 isa computer-readable medium. In various different implementations, thestorage device 930 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In additionalimplementations, a computer program product is tangibly embodied in aninformation carrier. The computer program product contains instructionsthat, when executed, perform one or more methods, such as thosedescribed above. The information carrier is a computer- ormachine-readable medium, such as the memory 920, the storage device 930,or memory on processor 910.

The high speed controller 940 manages bandwidth-intensive operations forthe computing device 900, while the low speed controller 960 manageslower bandwidth-intensive operations. Such allocation of duties isexemplary only. In some implementations, the high-speed controller 940is coupled to the memory 920, the display 980 (e.g., through a graphicsprocessor or accelerator), and to the high-speed expansion ports 950,which may accept various expansion cards (not shown). In someimplementations, the low-speed controller 960 is coupled to the storagedevice 930 and low-speed expansion port 970. The low-speed expansionport 970, which may include various communication ports (e.g., USB,Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or moreinput/output devices, such as a keyboard, a pointing device, a scanner,or a networking device such as a switch or router, e.g., through anetwork adapter.

The computing device 900 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 900 a or multiple times in a group of such servers 900a, as a laptop computer 900 b, or as part of a rack server system 900 c.

Various implementations of the systems and techniques described here canbe realized in digital electronic and/or optical circuitry, integratedcircuitry, specially designed ASICs (application specific integratedcircuits), computer hardware, firmware, software, and/or combinationsthereof. These various implementations can include implementation in oneor more computer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium” and“computer-readable medium” refer to any computer program product,non-transitory computer readable medium, apparatus and/or device (e.g.,magnetic discs, optical disks, memory, Programmable Logic Devices(PLDs)) used to provide machine instructions and/or data to aprogrammable processor, including a machine-readable medium thatreceives machine instructions as a machine-readable signal. The term“machine-readable signal” refers to any signal used to provide machineinstructions and/or data to a programmable processor.

Implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Moreover,subject matter described in this specification can be implemented as oneor more computer program products, i.e., one or more modules of computerprogram instructions encoded on a computer readable medium for executionby, or to control the operation of, data processing apparatus. Thecomputer readable medium can be a machine-readable storage device, amachine-readable storage substrate, a memory device, a composition ofmatter effecting a machine-readable propagated signal, or a combinationof one or more of them. The terms “data processing apparatus”,“computing device” and “computing processor” encompass all apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, or multiple processors or computers.The apparatus can include, in addition to hardware, code that creates anexecution environment for the computer program in question, e.g., codethat constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, or a combination of one or moreof them. A propagated signal is an artificially generated signal, e.g.,a machine-generated electrical, optical, or electromagnetic signal, thatis generated to encode information for transmission to suitable receiverapparatus.

A computer program (also known as an application, program, software,software application, script, or code) can be written in any form ofprogramming language, including compiled or interpreted languages, andit can be deployed in any form, including as a stand-alone program or asa module, component, subroutine, or other unit suitable for use in acomputing environment. A computer program does not necessarilycorrespond to a file in a file system. A program can be stored in aportion of a file that holds other programs or data (e.g., one or morescripts stored in a markup language document), in a single filededicated to the program in question, or in multiple coordinated files(e.g., files that store one or more modules, sub programs, or portionsof code). A computer program can be deployed to be executed on onecomputer or on multiple computers that are located at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer readable media suitable forstoring computer program instructions and data include all forms ofnon-volatile memory, media and memory devices, including by way ofexample semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto optical disks; and CD ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, one or more aspects of thedisclosure can be implemented on a computer having a display device,e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, ortouch screen for displaying information to the user and optionally akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

One or more aspects of the disclosure can be implemented in a computingsystem that includes a backend component, e.g., as a data server, orthat includes a middleware component, e.g., an application server, orthat includes a frontend component, e.g., a client computer having agraphical user interface or a Web browser through which a user caninteract with an implementation of the subject matter described in thisspecification, or any combination of one or more such backend,middleware, or frontend components. The components of the system can beinterconnected by any form or medium of digital data communication,e.g., a communication network. Examples of communication networksinclude a local area network (“LAN”) and a wide area network (“WAN”), aninter-network (e.g., the Internet), and peer-to-peer networks (e.g., adhoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someimplementations, a server transmits data (e.g., an HTML page) to aclient device (e.g., for purposes of displaying data to and receivinguser input from a user interacting with the client device). Datagenerated at the client device (e.g., a result of the user interaction)can be received from the client device at the server.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the disclosure or of what maybe claimed, but rather as descriptions of features specific toparticular implementations of the disclosure. Certain features that aredescribed in this specification in the context of separateimplementations can also be implemented in combination in a singleimplementation. Conversely, various features that are described in thecontext of a single implementation can also be implemented in multipleimplementations separately or in any suitable sub-combination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multi-tasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made without departingfrom the spirit and scope of the disclosure. Accordingly, otherimplementations are within the scope of the following claims. Forexample, the actions recited in the claims can be performed in adifferent order and still achieve desirable results.

What is claimed is:
 1. A user device comprising: a computing devicethat: transmits a search query from the user device; receives a firstgrouped set of search results based on the search query, wherein thefirst grouped set corresponds to a first application, and wherein thefirst grouped set includes: a header, wherein the header includes afirst access mechanism corresponding to a first state of the firstapplication; and at least two search results, wherein each of the searchresults (i) corresponds to a respective second state of the firstapplication responsive to the search query and (ii) includes arespective second access mechanism corresponding to the respectivesecond state; and a display that displays (i) the first grouped set ofsearch results and (ii) a header link corresponding to the header,wherein, in response to the header link being selected, the computingdevice accesses the first state of the application using the firstaccess mechanism.
 2. The user device of claim 1 wherein the first accessmechanism corresponds to a default access mechanism of the firstapplication, and wherein the first state corresponds to a default stateof the first application.
 3. The user device of claim 1 wherein the atleast two search results include a first search result and a secondsearch result, and wherein the respective second states corresponding tothe first search result and the second search result are different. 4.The user device of claim 1 wherein the display displays an installationstate of the first application, the installation state indicatingwhether a native application edition of the first application isinstalled on the user device.
 5. The user device of claim 1 wherein thedisplay displays respective selectable links corresponding to each ofthe at least two search results, and wherein, in response to one of therespective selectable links being selected, the computing deviceaccesses a corresponding one of the respective second states.
 6. Theuser device of claim 5 wherein: the display displays an expansionelement associated with the header, wherein the expansion element has anexpanded state and a collapsed state; when the expansion element is inthe expanded state, a first amount of the respective selectable links isdisplayed; and when the expansion element is in the collapsed state, asecond amount of the respective selectable links is displayed, whereinthe second amount is less than the first amount.
 7. The user device ofclaim 6 wherein, in response to a request by a user to transition theexpansion element to the expanded state: the computing device (i)generates a request for additional individual search resultscorresponding to the first application and (ii) receives the additionalindividual search results; and the display displays additionalrespective selectable links corresponding to the additional individualsearch results.
 8. The user device of claim 1 wherein (i) the firstgrouped set of search results includes an advertisement associated withthe first application and (ii) the display displays the advertisementwith the first grouped set of search results.
 9. The user device ofclaim 1 wherein the header link includes a name of the firstapplication.
 10. The user device of claim 1 wherein the search resultsindicate a plurality of native applications installable and executableon the user device, and wherein the first access mechanism is configuredto, in response to selection of the header link, perform at least one ofthe following: (i) open the corresponding native application on the userdevice to a default state and (ii) download and install thecorresponding native application onto the user device and subsequentlyopen the corresponding native application on the user device to thedefault state.
 11. A method comprising: transmitting a search query froma user device; receiving, at the user device, a first grouped set ofsearch results based on the search query, wherein the first grouped setcorresponds to a first application, and wherein the first grouped setincludes: a header, wherein the header includes a first access mechanismcorresponding to a first state of the first application; and at leasttwo search results, wherein each of the search results (i) correspondsto a respective second state of the first application responsive to thesearch query and (ii) includes a respective second access mechanismcorresponding to the respective second state; displaying, on a display,(i) the first grouped set of search results and (ii) a header linkcorresponding to the header; and in response to the header link beingselected, accessing the first state of the application using the firstaccess mechanism.
 12. The method of claim 11 wherein the first accessmechanism corresponds to a default access mechanism of the firstapplication, and wherein the first state corresponds to a default stateof the first application.
 13. The method of claim 11 wherein the atleast two search results include a first search result and a secondsearch result, and wherein the respective second states corresponding tothe first search result and the second search result are different. 14.The method of claim 11 further comprising displaying an installationstate of the first application, wherein the installation state indicateswhether a native application edition of the first application isinstalled on the user device.
 15. The method of claim 11 furthercomprising: displaying respective selectable links corresponding to eachof the at least two search results; and in response to one of therespective selectable links being selected, accessing a correspondingone of the respective second states.
 16. The method of claim 15 furthercomprising: displaying an expansion element associated with the header,wherein the expansion element has an expanded state and a collapsedstate; in response to the expansion element being in the expanded state,displaying a first amount of the respective selectable links isdisplayed; and in response to the expansion element being in thecollapsed state, displaying a second amount of the respective selectablelinks, wherein the second amount is less than the first amount.
 17. Themethod of claim 16 further comprising, in response to a request by auser to transition the expansion element to the expanded state:generating a request for additional individual search resultscorresponding to the first application; receiving the additionalindividual search results; and displaying additional respectiveselectable links corresponding to the additional individual searchresults.
 18. The method of claim 11 further comprising: including anadvertisement associated with the first application in the first groupedset of search results; and displaying the advertisement with the firstgrouped set of search results.
 19. The method of claim 11 furthercomprising including a name of the first application in the header link.20. A non-transitory computer-readable medium comprising stored computerprogram instructions that, when executed on a user device, cause one ormore processors to: transmit a search query from the user device;receive, at the user device, a first grouped set of search results basedon the search query, wherein the first grouped set corresponds to afirst application, and wherein the first grouped set includes: a header,wherein the header includes a first access mechanism corresponding to afirst state of the first application; and at least two search results,wherein each of the search results (i) corresponds to a respectivesecond state of the first application responsive to the search query and(ii) includes a respective second access mechanism corresponding to therespective second state; display, on a screen, (i) the first grouped setof search results and (ii) a header link corresponding to the header;and in response to the header link being selected, access the firststate of the application using the first access mechanism.